다음을 통해 공유


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는 이 멤버를 버스 및 디바이스에 적절한 값(예: PCIBusLevelSensitive)으로 초기화합니다. 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 포함)

추가 정보

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth