다음을 통해 공유


VIRTUAL_HW_INITIALIZATION_DATA 구조체(storport.h)

VIRTUAL_HW_INITIALIZATION_DATA 구조에는 각 가상 미니포트 드라이버에 특정한 정보가 포함됩니다.

구문

typedef struct _VIRTUAL_HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVIRTUAL_HW_FIND_ADAPTER    HwFindAdapter;
  PHW_RESET_BUS               HwResetBus;
  PHW_DMA_STARTED             HwDmaStarted;
  PHW_ADAPTER_STATE           HwAdapterState;
  ULONG                       DeviceExtensionSize;
  ULONG                       SpecificLuExtensionSize;
  ULONG                       SrbExtensionSize;
  ULONG                       NumberOfAccessRanges;
  PVOID                       Reserved;
  UCHAR                       MapBuffers;
  BOOLEAN                     NeedPhysicalAddresses;
  BOOLEAN                     TaggedQueuing;
  BOOLEAN                     AutoRequestSense;
  BOOLEAN                     MultipleRequestPerLu;
  BOOLEAN                     ReceiveEvent;
  USHORT                      VendorIdLength;
  PVOID                       VendorId;
  union {
    USHORT ReservedUshort;
    USHORT PortVersionFlags;
  };
  USHORT                      DeviceIdLength;
  PVOID                       DeviceId;
  PHW_ADAPTER_CONTROL         HwAdapterControl;
  PHW_BUILDIO                 HwBuildIo;
  PHW_FREE_ADAPTER_RESOURCES  HwFreeAdapterResources;
  PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
  PHW_COMPLETE_SERVICE_IRP    HwCompleteServiceIrp;
  PHW_INITIALIZE_TRACING      HwInitializeTracing;
  PHW_CLEANUP_TRACING         HwCleanupTracing;
} VIRTUAL_HW_INITIALIZATION_DATA, *PVIRTUAL_HW_INITIALIZATION_DATA;

멤버

HwInitializationDataSize

sizeof()에서 반환된 대로 이 구조체의 크기를 바이트 단위로 지정합니다. 이 멤버는 가상 미니포트 드라이버에서 사용되는 이 구조체의 버전을 나타냅니다. 가상 미니포트 드라이버의 DriverEntry 루틴은 포트 드라이버에 대해 이 멤버의 값을 설정해야 합니다.

AdapterInterfaceType

storport 가상 미니포트 드라이버의 경우 AdapterInterfaceType 의 값은 거의 항상 내부입니다. Storport 드라이버가 레거시 버스를 지원하지 않기 때문입니다.

이 때문에 SCSI 포트 드라이버와 함께 사용되는 대부분의 어댑터 인터페이스 형식은 Storport 드라이버에 유효하지 않습니다. 특히 Storport는 다음을 지원하지 않습니다.

  • Isa
  • Eisa
  • MicroChannel
  • TurboChannel

또한 SCSI 포트 사례와 달리 Storport 드라이버와 함께 작동하는 가상 미니포트 드라이버는 다음 멤버에 대한 값을 제공할 필요가 없습니다.

  • VendorIdLength
  • VendorId
  • DeviceIdLength
  • DeviceId

HwInitialize

모든 가상 미니포트 드라이버에 필요한 진입점인 가상 미니포트 드라이버의 HwStorInitialize 루틴에 대한 포인터입니다.

HwStartIo

모든 가상 미니포트 드라이버에 필요한 진입점인 가상 미니포트 드라이버의 HwStorStartIo 루틴에 대한 포인터입니다.

HwInterrupt

사용되지 않습니다. 가상 미니포트 드라이버는 인터럽트 처리를 하지 않습니다.

HwFindAdapter

모든 가상 미니포트 드라이버에 필요한 진입점인 가상 미니포트 드라이버의 VirtualHwStorFindAdapter 루틴에 대한 포인터입니다.

HwResetBus

모든 가상 미니포트 드라이버에 필요한 진입점인 가상 미니포트 드라이버의 HwStorResetBus 루틴에 대한 포인터입니다.

HwDmaStarted

사용되지 않습니다. 가상 미니포트 드라이버는 DMA를 수행하지 않습니다.

HwAdapterState

Storport 드라이버는 레거시 드라이버를 지원하지 않습니다. 따라서 이 멤버는 NULL이어야 합니다.

DeviceExtensionSize

어댑터별 페이징되지 않은 디바이스 확장에 가상 미니포트 드라이버에 필요한 크기(바이트)를 지정합니다. 가상 미니포트 드라이버는 드라이버 결정 어댑터 정보에 대한 스토리지로 디바이스 확장을 사용합니다. 운영 체제별 포트 드라이버는 0으로 할당하는 각 디바이스 확장을 초기화하고 가상 미니포트 드라이버에 대한 대부분의 호출에서 어댑터별 디바이스 확장에 대한 포인터를 전달합니다. 지정된 크기에는 논리 단위별 드라이버 요청 가상 미니포트 스토리지가 포함되지 않습니다.

SpecificLuExtensionSize

가상 미니포트 드라이버가 논리 단위 단위 비 페이징 스토리지(있는 경우)에 필요한 크기(바이트)를 지정합니다. 가상 미니포트 드라이버는 LU(논리 단위) 확장을 가상 버스의 주변 장치에 대한 드라이버 결정 LU 정보에 대한 스토리지로 사용할 수 있습니다. 운영 체제별 포트 드라이버는 0으로 할당하는 각 LU 확장을 초기화합니다. 가상 미니포트 드라이버가 스토리지가 필요한 LU별 정보를 유지 관리하지 않는 경우 이 멤버를 0으로 설정합니다.

SrbExtensionSize

요청당 페이징되지 않은 스토리지(있는 경우)에 대해 가상 미니포트 드라이버에 필요한 크기(바이트)를 지정합니다. Storport 드라이버와 함께 작동하는 가상 미니포트 드라이버는 분산/수집 목록을 지원해야 하며 SRB별 분산/수집 목록은 일반적으로 SRB 확장에 할당되므로 이 멤버는 거의 0이 아닙니다.

NumberOfAccessRanges

사용되지 않습니다. 가상 미니포트 드라이버는 하드웨어를 지원하지 않습니다.

Reserved

시스템에서 사용하도록 예약되었습니다.

MapBuffers

Name Description
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 READ 및 WRITE를 제외한 IO 요청에 대한 버퍼를 매핑합니다.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE READ 및 WRITE를 포함한 모든 IO 요청에 대한 버퍼를 매핑합니다. 미니포트 드라이버는 일반적으로 이 설정을 사용합니다.

NeedPhysicalAddresses

사용되지 않습니다. 가상 미니포트 드라이버는 하드웨어를 지원하지 않습니다.

TaggedQueuing

TRUE로 설정해야 합니다. TRUE 값은 가상 미니포트 드라이버가 태그가 지정된 큐를 지원한다는 것을 나타냅니다.

AutoRequestSense

TRUE로 설정해야 합니다. TRUE 값은 명시적 요청 없이 HBA가 요청 센스 작업을 수행할 수 있음을 나타냅니다.

MultipleRequestPerLu

TRUE로 설정해야 합니다. TRUE 값은 가상 미니포트 드라이버가 LU(논리 단위)당 여러 요청을 큐에 대기할 수 있음을 나타냅니다.

ReceiveEvent

이 값은 더 이상 사용되지 않으며 TRUE 또는 FALSE로 설정할 수 있습니다.

VendorIdLength

공급업체 식별자의 길이(바이트)입니다.

VendorId

공급업체 식별자입니다.

ReservedUshort

예약되어 있습니다.

PortVersionFlags

포트 드라이버가 지원하는 기능을 나타내는 플래그의 비트맵입니다. 현재 사용 가능한 유일한 플래그는 SP_VER_TRACE_SUPPORT 포트 드라이버가 추적을 지원한다는 것을 나타냅니다.

DeviceIdLength

디바이스 식별자의 길이(바이트)입니다.

DeviceId

디바이스 식별자입니다.

HwAdapterControl

가상 미니포트 드라이버의 HwStorAdapterControl 루틴에 대한 포인터입니다.

HwBuildIo

이 멤버는 사용되지 않습니다.

HwFreeAdapterResources

모든 가상 미니포트 드라이버에 필요한 진입점인 가상 미니포트 드라이버의 HwStorFreeAdapterResources 루틴에 대한 포인터입니다.

HwProcessServiceRequest

가상 미니포트 드라이버의 HwStorProcessServiceRequest 루틴에 대한 포인터입니다.

HwCompleteServiceIrp

가상 미니포트 드라이버의 HwStorCompleteServiceIrp 루틴에 대한 포인터입니다.

HwInitializeTracing

가상 미니포트 드라이버의 HwStorInitializeTracing 루틴에 대한 포인터입니다.

HwCleanupTracing

가상 미니포트 드라이버의 HwStorCleanupTracing 루틴에 대한 포인터입니다.

설명

가상 미니포트 드라이버가 Windows 8 이상에서만 실행되는 경우 드라이버는 VIRTUAL_HW_INITIALIZATION_DATA 대신 HW_INITIALIZATION_DATA 구조를 사용해야 합니다.

요구 사항

요구 사항
헤더 storport.h(Storport.h 포함)

추가 정보

HwStorAdapterControl

HwStorCleanupTracing

HwStorCompleteServiceIrp

HwStorFreeAdapterResources

HwStorInitialize

HwStorInitializeTracing

HwStorProcessServiceRequest

HwStorResetBus

HwStorStartIo

VirtualHwStorFindAdapter