PORT_CONFIGURATION_INFORMATION 구조체(storport.h)
PORT_CONFIGURATION_INFORMATION HBA(호스트 버스 어댑터)에 대한 구성 정보를 포함합니다.
구문
typedef struct _PORT_CONFIGURATION_INFORMATION {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
ULONG DmaChannel;
ULONG DmaPort;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
ACCESS_RANGE( ) *AccessRanges[];
PVOID MiniportDumpData;
PVOID Reserved;
UCHAR NumberOfBuses;
CCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
UCHAR MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
UCHAR SrbType;
UCHAR AddressType;
UCHAR ReservedUchars[2];
ULONG SlotNumber;
ULONG BusInterruptLevel2;
ULONG BusInterruptVector2;
KINTERRUPT_MODE InterruptMode2;
ULONG DmaChannel2;
ULONG DmaPort2;
DMA_WIDTH DmaWidth2;
DMA_SPEED DmaSpeed2;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
UCHAR Dma64BitAddresses;
BOOLEAN ResetTargetSupported;
UCHAR MaximumNumberOfLogicalUnits;
BOOLEAN WmiDataProvider;
STOR_SYNCHRONIZATION_MODEL SynchronizationModel;
PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
INTERRUPT_SYNCHRONIZATION_MODE InterruptSynchronizationMode;
MEMORY_REGION DumpRegion;
ULONG RequestedDumpBufferSize;
BOOLEAN VirtualDevice;
UCHAR DumpMode;
UCHAR DmaAddressWidth;
ULONG ExtendedFlags1;
ULONG MaxNumberOfIO;
ULONG MaxIOsPerLun;
ULONG InitialLunQueueDepth;
ULONG BusResetHoldTime;
ULONG FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
멤버
Length
PORT_CONFIGURATION_INFORMATION 구조체의 크기(바이트)입니다. Storport 드라이버에서 초기화된 이 멤버는 구조체 버전으로도 사용됩니다.
SystemIoBusNumber
HBA가 연결된 I/O 버스의 시스템 할당 번호입니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다. 플랫폼에 지정된 AdapterInterfaceType의 여러 I/O 버스가 있을 수 있으므로 해당 값은 시스템 할당입니다.
AdapterInterfaceType
I/O 버스 인터페이스입니다. Storport는 이 멤버를 HW_INITIALIZATION_DATA 구조체의 미니포트 드라이버에서 지정한 값으로 초기화합니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
BusInterruptLevel
버스 상대 인터럽트 요청 수준입니다. Storport는 HBA의 인터럽트 사용에 대해 가정하지 않으므로 기본값은 0입니다. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
BusInterruptVector
HBA에서 반환된 버스 상대 벡터입니다. Storport는 HBA의 인터럽트 사용에 대해 가정하지 않으므로 기본값은 0입니다. 이 멤버는 해당 HBA에 대해 BusInterruptLevel 멤버를 설정한 드라이버와 관련이 없습니다. PCIBus와 같은 인터럽트 벡터를 사용하는 I/O 버스 유형에 대한 HBA와 관련이 있습니다. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
InterruptMode
HBA에서 LevelSensitive 또는 래치 ("에지 트리거"라고도 함) 인터럽트 사용 여부를 지정합니다. Storport는 이 멤버를 버스 및 디바이스에 적절한 값(예: PCIBus용 LevelSensitive)으로 초기화합니다. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
MaximumTransferLength
HBA가 단일 전송 작업에서 전송할 수 있는 최대 바이트 수입니다. 기본적으로 이 멤버의 값은 무제한 최대 전송 크기를 나타내는 SP_UNINITIALIZED_VALUE. HBA의 전송 지원이 더 제한된 경우 미니포트 드라이버는 HBA의 전송 용량에 따라 이 멤버를 다시 설정해야 합니다. 미니포트 드라이버의 HwStorInterrupt 루틴이 HBA에서 인터럽트를 사용하지 않도록 설정할 수 없는 경우 드라이버 개발 중에 이 멤버를 조정하여 해당 미니포트 드라이버의 ISR에 소요된 시간이 전체 시스템 성능을 저하시키지 않도록 할 수 있습니다.
NumberOfPhysicalBreaks
스토리지 어댑터가 단일 전송에서 관리할 수 있는 최대 물리적 페이지 수입니다(즉, 분산/수집 지원 범위). 기본적으로 이 멤버의 값은 0x11. 미니포트 드라이버는 스토리지 어댑터의 기능에 따라 이 멤버를 다시 설정해야 합니다.
DmaChannel
하위 HBA에서 사용하는 DMA 채널입니다. 기본적으로 이 멤버의 값은 SP_UNINITIALIZED_VALUE. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
DmaPort
하위 HBA에서 사용하는 DMA 포트입니다. 기본적으로 이 멤버의 값은 SP_UNINITIALIZED_VALUE. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
DmaWidth
HBA가 DMA를 사용하는 경우 DMA 전송의 너비입니다. 기본적으로 이 멤버의 값은 0입니다. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
DmaSpeed
Eisa HBA의 DMA 데이터 전송 속도입니다. Storport는 이 멤버를 초기화하고 미니포트 드라이버는 이 멤버를 수정해서는 안 됩니다.
AlignmentMask
전송 작업에 HBA에 필요한 버퍼에 대한 맞춤 제한을 나타내는 마스크입니다. 유효한 마스크 값의 예로는 0(바이트 정렬), 1(단어 정렬), 3(DWORD 맞춤) 및 7(이중 DWORD 맞춤)이 있습니다. HBA가 분산/수집을 지원하는 경우 미니포트 드라이버는 이 마스크를 설정해야 합니다. 허용되는 다음 맞춤 마스크 값은 wdm.h에 정의되어 있습니다.
값 | 의미 |
---|---|
FILE_BYTE_ALIGNMENT(0x00000000) | 데이터가 바이트 정렬됨(디바이스에 대한 맞춤 요구 사항 없음) |
FILE_WORD_ALIGNMENT(0x00000001) | 데이터는 2 바이트 경계에 맞춰야 합니다. |
FILE_LONG_ALIGNMENT(0x00000003) | 데이터는 4 바이트 경계에 맞춰야 합니다. |
FILE_QUAD_ALIGNMENT(0x00000007) | 데이터는 8 바이트 경계에 맞춰야 합니다. |
FILE_OCTA_ALIGNMENT(0x0000000f) | 데이터는 16비트 경계에 맞춰야 합니다. |
FILE_32_BYTE_ALIGNMENT(0x0000001f) | 데이터는 32비트 경계에 맞춰야 합니다. |
FILE_64_BYTE_ALIGNMENT(0x0000003f) | 데이터는 64비트 경계에 맞춰야 합니다. |
FILE_128_BYTE_ALIGNMENT(0x0000007f) | 데이터는 128비트 경계에 맞춰야 합니다. |
FILE_256_BYTE_ALIGNMENT(0x000000ff) | 데이터는 256비트 경계에 맞춰야 합니다. |
FILE_512_BYTE_ALIGNMENT(0x000001ff) | 데이터는 512 바이트 경계에 맞춰야 합니다. |
NumberOfAccessRanges
배열의 AccessRanges 요소 수를 지정합니다.
AccessRanges
ACCESS_RANGE 형식 요소의 배열에 대한 포인터입니다. Storport는 액세스 범위에 대한 메모리를 할당하고 이 멤버를 초기화합니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
MiniportDumpData
crashdump 또는 최대 절전 모드 중에 사용되는 덤프 컨텍스트에 대한 포인터입니다.
Reserved
시스템용으로 예약되어 있습니다(사전 Windows 8).
NumberOfBuses
어댑터에서 제어하는 버스 수입니다. 기본적으로 이 멤버의 값은 0입니다. 이 멤버의 최대 값은 SCSI_MAXIMUM_BUSES_PER_ADAPTER. 이 멤버는 Windows 8 시작해서 사용할 수 있습니다.
InitiatorBusId[8]
초기자 버스 ID입니다. 입력 InitiatorBusId[0] 에 SP_UNINITIALIZED_VALUE 값이 있는 경우 HBA에서 HBA를 쿼리하여 결정된 특정 값을 사용할 필요가 없는 경우 미니포트 드라이버는 기본값을 할당할 수 있습니다. 그렇지 않으면 미니포트 드라이버는 가능한 경우 포트 드라이버에서 할당한 0이 아닌 값을 사용해야 합니다. 일반적으로 이 값은 MaximumNumberOfTargets에 설정된 값으로 제한됩니다.
ScatterGather
TRUE이면 HBA는 분산/수집을 지원합니다. Storport는 미니포트 드라이버가 분산/수집을 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. Storport와 함께 작동하는 미니포트 드라이버는 이 값을 수정해서는 안 합니다. (참고: Windows Server 2008 R2 및 Windows 7 이전의 Windows 버전에서는 이 멤버가 FALSE로 설정됩니다. 이 경우 미니포트 드라이버는 이 멤버를 TRUE로 설정해야 합니다. 이 멤버를 TRUE 로 설정하지 않으면 HBA 디바이스가 시작되지 않습니다.)
Master
TRUE이면 HBA는 master 버스입니다. Storport는 미니포트 드라이버가 버스 마스터링 DMA를 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. Storport와 함께 작동하는 미니포트 드라이버는 이 값을 수정해서는 안 합니다. (참고: Windows Server 2008 R2 및 Windows 7 이전의 Windows 버전에서는 이 멤버가 FALSE로 설정됩니다. 이 경우 미니포트 드라이버는 이 멤버를 TRUE로 설정해야 합니다. 이 멤버를 TRUE 로 설정하지 않으면 HBA 디바이스가 시작되지 않습니다.)
CachesData
TRUE이면 HBA는 데이터를 캐시하거나 주변 장치에서 캐시된 상태를 유지 관리합니다. FALSE인 경우 HBA는 데이터를 캐시하거나 주변 장치에서 캐시된 상태를 유지 관리하지 않습니다. 기본적으로 이 멤버의 값은 FALSE입니다. TRUE로 다시 설정되면 Storport는 파일 시스템 캐시 플러시와 같은 특정 시스템 이벤트가 발생할 때 미니포트 드라이버에 알깁니다.
AdapterScansDown
Storport는 이 멤버를 무시합니다.
AtdiskPrimaryClaimed
Storport는 이 멤버를 사용하지 않으며 미니포트 드라이버는 이 멤버를 설정해서는 안됩니다.
AtdiskSecondaryClaimed
Storport는 이 멤버를 사용하지 않으며 미니포트 드라이버는 이 멤버를 설정해서는 안됩니다.
Dma32BitAddresses
TRUE이면 HBA에는 32개의 주소 줄이 있으며 실제 주소가 0x00FFFFFF보다 큰 메모리에 액세스할 수 있습니다. Storport는 미니포트 드라이버가 버스 너비 DMA를 지원해야 하므로 이 멤버를 TRUE로 초기화합니다. Dma64BitAddresses에 대한 값이 설정되지 않은 경우 기본 DMA 주소 지정이므로 미니포트 드라이버는 이 값을 수정해서는 안됩니다. 참고: 디바이스 하드웨어에서 32비트 주소만 지원되는 경우 Dma64BitAddresses를 0으로 설정해야 합니다.
DemandMode
시스템 DMA 컨트롤러가 단일 주기 작업 대신 수요 모드로 프로그래밍되어야 하는지 여부를 나타냅니다. Storport는 하위 모드 DMA를 지원하지 않으므로 이 멤버를 FALSE로 초기화합니다. 미니포트 드라이버는 이 값을 수정하지 않아야 합니다.
MapBuffers
Storport가 SRB 데이터 버퍼 주소를 시스템 가상 주소에 매핑하는지 여부를 나타냅니다. 미니포트 드라이버는 이 멤버를 다음 값 중 하나로 설정하여 SRB 데이터 버퍼 주소에 대한 매핑을 제어합니다.
값 | 의미 |
---|---|
STOR_MAP_NO_BUFFERS | SRB_FUNCTION_IO_CONTROL 및 SRB_FUNCTION_WMI 대해서만 버퍼를 매핑합니다. |
STOR_MAP_ALL_BUFFERS | 사용되지 않습니다. 이 값은 STOR_MAP_NON_READ_WRITE_BUFFERS 효과와 동일합니다. |
STOR_MAP_NON_READ_WRITE_BUFFERS | 읽기 및 쓰기 요청을 제외한 모든 IO에 대한 버퍼를 매핑합니다. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | 읽기 및 쓰기 요청을 포함하여 모든 IO에 대한 버퍼를 매핑합니다. 부팅을 지원하는 미니포트는 PAGE_SIZE 읽기 또는 쓰기 요청을 처리해야 합니다. 이러한 읽기 또는 쓰기 요청은 항상 성공적으로 완료되어야 합니다. Storport는 낮은 시스템 메모리 조건에서 버퍼를 매핑하지 못할 수 있습니다. 이 경우 SRB의 DataBuffer 멤버는 NULL이 됩니다. |
NeedPhysicalAddresses
TRUE인 경우 미니포트 드라이버는 HBA에서 요구하는 대로 가상 주소를 실제 주소로 변환해야 합니다. Storport는 미니포트 드라이버가 분산/수집 목록을 지원해야 하므로 이 멤버를 TRUE로 초기화합니다. 미니포트는 이 값을 수정하지 않아야 합니다.
TaggedQueuing
TRUE이면 HBA는 SCSI 태그를 사용하여 여러 요청의 큐를 지원합니다. Storport는 미니포트 드라이버가 태그가 지정된 큐를 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. 미니포트 드라이버는 이 값을 수정하지 않아야 합니다.
AutoRequestSense
TRUE이면 HBA는 자동 요청 센스를 지원합니다. Storport는 미니포트 드라이버가 자동 요청 센스를 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. 미니포트 드라이버는 이 값을 수정하지 않아야 합니다.
MultipleRequestPerLu
TRUE이면 HBA는 논리 단위당 여러 요청을 지원합니다. Storport는 미니포트 드라이버가 논리 단위에 발급된 여러 요청을 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. 미니포트 드라이버는 이 값을 수정하지 않아야 합니다.
ReceiveEvent
Storport는 이 멤버를 사용하지 않으며 미니포트 드라이버는 이 멤버를 설정해서는 안됩니다.
RealModeInitialized
Storport는 이 멤버를 사용하지 않으며 미니포트 드라이버는 이 멤버를 설정해서는 안됩니다.
BufferAccessScsiPortControlled
Storport는 이 멤버를 사용하지 않으며 미니포트 드라이버는 이 멤버를 설정해서는 안됩니다.
MaximumNumberOfTargets
어댑터가 제어할 수 있는 대상 주변 장치 수입니다. 기본적으로 이 멤버의 값은 SCSI_MAXIMUM_TARGETS_PER_BUS. 미니포트 드라이버는 HBA에 더 제한된 기능이 있거나 HBA에 확장된 버스 기능이 있음을 나타내는 더 큰 값으로 이 멤버를 더 작은 값으로 다시 설정할 수 있습니다. 이 멤버의 최대값은 255입니다.
SrbType
미니포트 드라이버로 보낼 SRB의 유형입니다. Windows 8 시작해서 사용할 수 있습니다. 다음 값 중 하나로 설정됩니다.
값 | 의미 |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | 미니포트 드라이버는 표준 SRB를 받습니다. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | 미니포트 드라이버는 확장된 SRB를 받습니다. |
AddressType
Storport와 미니포트 드라이버 간에 사용되는 주소 유형입니다. Windows 8 시작해서 사용할 수 있습니다. 다음 값으로 설정할 수 있습니다.
값 | 의미 |
---|---|
STORAGE_ADDRESS_TYPE_BTL8 | 버스, 대상 및 LUN(BTL) 8비트 주소 지정. |
ReservedUchars[2]
시스템용으로 예약되어 있습니다(사전 Windows 8).
SlotNumber
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
BusInterruptLevel2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
BusInterruptVector2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
InterruptMode2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
DmaChannel2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
DmaPort2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
DmaWidth2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
DmaSpeed2
Storport에서 사용하도록 예약되었습니다. 미니포트 드라이버는 이 멤버를 수정해서는 안됩니다.
DeviceExtensionSize
미니포트 드라이버의 어댑터별 디바이스 확장에 필요한 크기(바이트)입니다. 미니포트 드라이버는 드라이버 결정 HBA 정보에 대한 스토리지로 디바이스 확장을 사용합니다. 운영 체제별 포트 드라이버는 각 디바이스 확장을 처음 할당할 때 한 번 초기화하고 0으로 채웁니다. 미니포트 드라이버에 대한 모든 호출에서 HBA 관련 디바이스 확장에 대한 포인터를 전달합니다. 지정된 크기에는 미니포트 드라이버 요청 논리 단위 스토리지가 포함되지 않습니다. 논리 단위별 스토리지의 크기는 이 항목의 뒷부분에 설명된 SpecificLuExtensionSize 필드를 통해 지정됩니다.
Storport는 SCSIPort의 모델을 따르지 않습니다(어댑터가 중지될 때마다 디바이스 확장을 다시 초기화하므로 HwScsiFindAdapter 에 대한 후속 호출은 제로 아웃 디바이스 확장을 수신). 대신 Storport는 디바이스 확장을 처음 할당할 때만 0으로 다시 설정하므로 지정된 어댑터에 대한 HwStorFindAdapter 에 대한 첫 번째 호출만 제로 아웃 디바이스 확장을 받습니다. HwStorFindAdapter 및 기타 미니포트 함수에 대한 후속 호출은 미니포트 드라이버에서 마지막으로 수정한 디바이스 확장을 수신합니다. 이렇게 하면 미니포트 드라이버가 PnP(플러그 앤 플레이) 중지 및 다시 시작 사이의 어댑터 상태에 대한 지식을 유지할 수 있으므로 미니포트 드라이버가 초기화 프로시저를 최적화할 수 있습니다.
SpecificLuExtensionSize
64K보다 큰 데이터 전송을 처리하기 위해 미니포트 드라이버가 논리 단위별 스토리지(있는 경우)에 필요한 바이트 크기입니다. Storport는 StorPortInitialize 루틴에서 보낸 HW_INITIALIZATION_DATA 구조체의 동일한 멤버에 있는 값으로 이 멤버를 초기화합니다.
미니포트 드라이버가 스토리지가 필요한 LU별 정보를 유지 관리하지 않는 경우 이 멤버를 0으로 설정합니다. 이 값은 컨트롤러가 실제로 지원할 수 있는 것과 관계없이 HBA가 32비트 주소를 받을 수 있다는 가정을 기반으로 합니다. 64비트 주소를 처리하기 위해 LUN 또는 SRB 확장에 추가 공간이 필요한 경우 StorPortGetUncachedExtension과 같은 루틴과 함께 사용하기 전에 이 값을 적절하게 조정해야 합니다.
SrbExtensionSize
64K보다 큰 데이터 전송을 처리하기 위해 미니포트 드라이버가 요청당 스토리지에 필요한 바이트 크기(있는 경우)입니다. Storport는 StorPortInitialize 루틴에서 보낸 HW_INITIALIZATION_DATA 구조체의 동일한 멤버에 있는 값으로 이 멤버를 초기화합니다.
StorPortGetUncachedExtension을 호출하기 전에 이 멤버를 설정하여 NumberOfPhysicalBreaks에 따라 요청당 스토리지의 크기를 변경합니다. 미니포트 드라이버가 스토리지가 필요한 SRB별 정보를 유지 관리하지 않는 경우 이 멤버를 0으로 설정합니다. 이 값은 컨트롤러가 실제로 지원할 수 있는 것과 관계없이 HBA가 32비트 주소를 받을 수 있다는 가정을 기반으로 합니다. 64비트 주소를 처리하기 위해 LUN 또는 SRB 확장에 추가 공간이 필요한 경우 ScsiPortGetUncachedExtension과 같은 루틴과 함께 사용하기 전에 이 값을 적절하게 조정해야 합니다.
Dma64BitAddresses
디바이스 하드웨어가 32비트 주소만 지원하는 경우 Dma64BitAddresses를 0으로 설정해야 합니다. 디바이스에서 64비트 주소를 지원하는 경우 이 필드는 HBA가 4GB보다 큰 주소에 액세스할 수 있는지 여부를 나타냅니다.
버스 너비 DMA를 지원하려면 Storport 어댑터가 필요합니다. 따라서 64비트 또는 PAE 컴퓨터에서 Storport는 어댑터가 전체 주소 범위에 액세스할 수 있음을 나타내는 SCSI_DMA64_SYSTEM_SUPPORTED Dma64BitAddresses 를 초기화합니다. 미니포트 드라이버가 이 값을 검색할 때 미니포트 드라이버가 64비트 DMA를 지원한다는 것을 포트 드라이버에 나타내려면 동일한 멤버의 다음 표에 있는 값 중 하나를 반환해야 합니다. 미니포트가 이 작업을 수행하지 못하면 어댑터의 성능이 심각하게 저하될 수 있습니다.
값 | 의미 |
---|---|
SCSI_DMA64_MINIPORT_SUPPORTED | 미니포트 드라이버는 I/O 전송을 위해 64비트 물리적 주소를 지원합니다. |
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED | 미니포트 드라이버는 전체 64비트 주소 지정을 지원합니다. 이는 I/O 요청에 실제 주소 > 가 4GB일 수 있음을 나타냅니다. 캐시되지 않은 확장, SenseInfo 및 Srb 확장은 4GB 이상일 수 있습니다. 할당은 4GB 경계를 넘지 못하도록 4GB 경계 맞춤으로 제한됩니다. |
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED | 미니포트 드라이버는 전체 64비트 주소 지정을 지원합니다. 이는 I/O 요청에 실제 주소 > 가 4GB일 수 있음을 나타냅니다. 캐시되지 않은 확장, SenseInfo 및 Srb 확장은 4GB 이상일 수 있습니다. 할당에는 경계 맞춤 요구 사항이 없습니다. |
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED | 미니포트 드라이버는 단일 4GB 지역에서 64비트 주소 지정을 지원합니다. 이는 I/O 요청, 캐시되지 않은 확장, SenseInfo 및 Srb 확장이 단일 4GB 지역에서 4GB의 실제 주소를 > 가질 수 있음을 나타냅니다. |
ResetTargetSupported
사용되지 않습니다. 이 멤버를 사용하지 마세요.
MaximumNumberOfLogicalUnits
HBA가 제어할 수 있는 대상당 최대 논리 단위 수입니다. 기본적으로 이 멤버의 값은 SCSI_MAXIMUM_LOGICAL_UNITS. 미니포트 드라이버는 HBA에 더 제한된 기능이 있거나 HBA에 확장된 기능이 있음을 나타내는 더 큰 값으로 이 멤버를 더 작은 값으로 다시 설정할 수 있습니다. 이 멤버의 최대값은 SCSI_MAXIMUM_LUNS_PER_TARGET.
WmiDataProvider
TRUE이면 미니포트 드라이버가 WMI(Windows Management Instrumentation) 요청에 응답합니다. Storport는 미니포트 드라이버가 WMI를 지원해야 하므로 이 멤버를 TRUE 로 초기화합니다. 또한 파이버 채널 어댑터용 미니포트 드라이버는 WMI를 통해 SAN Management HBA API를 지원해야 하며, RAID 관리 인터페이스를 지원하려면 호스트 기반 RAID 어댑터용 미니포트 드라이버가 필요합니다.
미니포트 드라이버는 이 값을 수정해서는 안됩니다.
SynchronizationModel
미니포트 드라이버가 지원하는 I/O 동기화 모델입니다. 가능한 값은 다음과 같습니다.
값 | 의미 |
---|---|
StorSynchronizeFullDuplex | 미니포트는 전체 이중 모드를 지원합니다. |
StorSynchronizeHalfDuplex | 미니포트는 반이중 모드를 지원합니다. |
HwMSInterruptRoutine
메시지 신호 인터럽트(MSI)를 생성하는 HBA의 미니포트 드라이버에 필요한 미니포트 드라이버의 HwMSInterruptRoutine 루틴에 대한 포인터입니다. 미니포트 드라이버는 HBA가 MSI를 생성하지 않는 경우 이 멤버를 NULL 로 설정합니다.
InterruptSynchronizationMode
인터럽트 동기화 모드를 지정하는 INTERRUPT_SYNCHRONIZATION_MODE 값입니다. 인터럽트 동기화 모드는 포트 드라이버가 메시지 신호 인터럽트 동기화 방법을 결정합니다.
DumpRegion
드라이버가 크래시 덤프 또는 최대 절전 모드 중에 사용할 수 있는 물리적으로 연속된 메모리 영역을 설명하는 MEMORY_REGION 구조체입니다.
RequestedDumpBufferSize
덤프/최대 절전 모드 중에 사용하기 위해 할당할 캐시되지 않은 확장의 바이트 크기입니다.
VirtualDevice
TRUE이면 이 디바이스 뒤에 실제 하드웨어가 없습니다(예: DMA 개체 없음, 인터럽트, I/O 포트). Storport는 실제 하드웨어를 제어하는 미니포트 대신 "가상" 미니포트를 지원하는 경우에 따라 다르게 동작합니다.
DumpMode
덤프 모드 중에 미니포트를 사용했음을 나타냅니다. 다음 값 중 하나를 가질 수 있습니다.
값 | 의미 |
---|---|
DUMP_MODE_CRASH | 덤프 모드의 미니포트는 크래시덤프에 사용됩니다. |
DUMP_MODE_HIBER | 덤프 모드의 미니포트는 최대 절전 모드에 사용됩니다. |
DUMP_MODE_MARK_MEMORY | 덤프 모드의 미니포트는 필요한 메모리를 표시하는 데 사용됩니다. |
DUMP_MODE_RESUME | 덤프 모드의 미니포트는 최대 절전 모드에서 다시 시작에 사용됩니다. |
DmaAddressWidth
어댑터의 DMA 주소 너비입니다. 미니포트는 이 값을 제공할 때 FeatureSupport 에서 STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 지정해야 합니다. 지정된 값은 (0 <DmaAddressWidth<= 64)이어야 합니다. 이 필드는 Windows 10 버전 2004부터 사용할 수 있습니다.
ExtendedFlags1
시스템에서 사용하도록 예약되었습니다.
MaxNumberOfIO
HBA에서 지원하는 최대 미해결 I/O 작업 수입니다. 기본값은 Storport에서 1000으로 설정됩니다. HBA가 1000개의 미해결 I/O 작업을 지원하지 않는 경우 미니포트는 이를 적절한 더 작은 값으로 조정해야 합니다.
HBA가 1000개 이상의 미해결 I/O 작업을 지원할 수 있는 경우 미니포트는 이 멤버를 어댑터 하드웨어에서 지원하는 값으로 늘릴 수 있습니다. 1000개 이상의 미해결 I/O 작업을 허용하려면 HBA가 Dma64BitAddresses 필드에 설정된 다음 64비트 DMA 주소 지정 메서드 중 하나를 지원해야 합니다.
- SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
- SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
- SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED
MaxIOsPerLun
LUN에서 지원되는 최대 I/O 요청 수입니다. Storport는 이를 기본값인 255로 설정합니다. LUN이 255개의 미해결 I/O 요청을 지원하지 않는 경우 미니포트는 이 멤버를 적절한 더 작은 값으로 조정해야 합니다. 이 멤버는 = MaxNumberOfIO여야 <합니다. MaxIOsPerLun> 255를 지원하려면 SrbType 필드를 SRB_TYPE_STORAGE_REQUEST_BLOCK 설정해야 합니다. Windows 8 시작합니다.
InitialLunQueueDepth
초기 LUN I/O 큐 깊이입니다. Storport는 이를 물리적 미니포트의 경우 기본값 20으로 설정하고 가상 미니포트의 경우 250으로 설정합니다. 이 멤버는 어댑터의 모든 LUN에 대한 초기 큐 깊이를 조정합니다. 개별 LUN에 대한 큐 깊이는 StorPortSetDeviceQueueDepth를 호출하여 설정됩니다. 이 멤버는 일반적으로 MaxIOsPerLun과 동일한 값으로 설정됩니다. Windows 8 시작합니다.
BusResetHoldTime
초기화가 감지된 후 어댑터를 일시 중지하는 데 걸리는 시간(마이크로초)입니다. 버스 재설정 후 대기 시간이 필요하지 않은 경우 이 값을 0으로 설정합니다. Windows 8 시작합니다.
FeatureSupport
어댑터에 대해 요청된 Storport 기능입니다. Windows 8 시작합니다. 미니포트 드라이버는 이 멤버를 다음 값의 비트 마스크로 설정할 수 있습니다.
값 | 의미 |
---|---|
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 | 미니포트 드라이버는 스토리지 디바이스 원격 분석을 지원합니다. |
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 | 미니포트는 시스템 종료 중에 STOP_UNIT 명령을 받도록 요청합니다. |
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 | 미니포트 드라이버는 어댑터 NUMA 노드에서 UncachedExtension을 할당하려고 합니다. |
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 | 미니포트 드라이버는 어댑터에 DMA V3 커널 API를 사용하는 것을 선호합니다. |
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 | 미니포트 드라이버는 SRB_FUNCTION_ABORT_COMMAND 통해 미해결 명령을 중단하는 기능을 지원합니다. |
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 | 어댑터는 SCSI SPC4 사양에 정의된 것보다 더 풍부한 온도 임계값 정보를 지원합니다. |
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 | 미니포트 드라이버는 어댑터의 DmaAddressWidth에서 DMA 주소 너비를 지정했습니다. 이 값은 Windows 10 버전 2004부터 사용할 수 있습니다. |
설명
Storport 드라이버는 이 구조를 할당하고 초기화하며, 가능한 한 많은 HBA 관련 구성 정보를 제공하고, 구조를 미니포트 드라이버의 HwStorFindAdapter 루틴에 전달합니다. Storport는 비 PnP 디바이스를 지원하지 않으므로 HwStorFindAdapter 는 어댑터를 검색하지 않습니다. 주 함수는 PORT_CONFIGURATION_INFORMATION 초기화하는 것입니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | storport.h(Srb.h, Storport.h, Strmini.h 포함) |