storport.h) (VIRTUAL_HW_INITIALIZATION_DATA 结构
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
指定虚拟微型端口驱动程序为其按适配器的非分页设备扩展所需的大小(以字节为单位)。 虚拟微型端口驱动程序使用其设备扩展作为驱动程序确定的适配器信息的存储。 特定于操作系统的端口驱动程序用零初始化它分配的每个设备扩展,并在大多数对虚拟微型端口驱动程序的调用中传递指向适配器特定设备扩展的指针。 给定的大小不包括任何虚拟微型端口驱动程序请求的每个逻辑单元存储。
SpecificLuExtensionSize
指定虚拟微型端口驱动程序为其每个逻辑单元的非分页存储(如果有)所需的大小(以字节为单位)。 虚拟微型端口驱动程序可以使用其逻辑单元 (LU) 扩展作为有关虚拟总线上外设的驱动程序确定 LU 信息的存储。 特定于操作系统的端口驱动程序用零初始化它分配的每个 LU 扩展。 如果虚拟微型端口驱动程序不维护它需要存储的每个 LU 信息,请将此成员设置为零。
SrbExtensionSize
指定虚拟微型端口驱动程序为其按请求的非分页存储(如果有)所需的大小(以字节为单位)。 由于使用 Storport 驱动程序的虚拟微型端口驱动程序必须支持散点/收集列表,并且每个 SRB 散点/收集列表通常在 SRB 扩展中分配,因此此成员很少为零。
NumberOfAccessRanges
未使用。 虚拟微型端口驱动程序不支持硬件。
Reserved
预留给系统使用。
MapBuffers
名称 | 说明 |
---|---|
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 请求的缓冲区,READ 和 WRITE 除外。 |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | 映射所有 IO 请求的缓冲区,包括 READ 和 WRITE。 微型端口驱动程序通常使用此设置。 |
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或更高版本上执行,则驱动程序应使用HW_INITIALIZATION_DATA结构而不是VIRTUAL_HW_INITIALIZATION_DATA。
要求
要求 | 值 |
---|---|
Header | storport.h (包括 Storport.h) |