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) |