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
指定虚拟微型端口驱动程序为其每个适配器非分页设备扩展所需的大小(以字节为单位)。 虚拟微型端口驱动程序使用其设备扩展作为驱动程序确定的适配器信息的存储。 特定于作系统的端口驱动程序初始化它使用零分配的每个设备扩展,并在大多数调用虚拟微型端口驱动程序时将指针传递给适配器特定的设备扩展。 给定大小不包括每个逻辑单元存储请求的任何虚拟微型端口驱动程序。
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 | 除 READ 和 WRITE 外,IO 请求的映射缓冲区。 |
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。
要求
要求 | 价值 |
---|---|
标头 | storport.h (包括 Storport.h) |