HW_INITIALIZATION_DATA 結構 (storport.h)
HW_INITIALIZATION_DATA (Storport) 結構包含每個迷你埠驅動程式的特定資訊,以及迷你埠驅動程式所管理的硬體。
語法
typedef struct _HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PVOID 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;
PHW_TRACING_ENABLED HwTracingEnabled;
ULONG FeatureSupport;
ULONG SrbTypeFlags;
ULONG AddressTypeFlags;
ULONG Reserved1;
PHW_UNIT_CONTROL HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
成員
HwInitializationDataSize
指定這個結構的大小,以位元組為單位,如 sizeof (HW_INITIALIZATION_DATA) 所傳回。 實際上,此成員表示迷你埠驅動程式所使用的此結構版本。 迷你埠驅動程式的 DriverEntry 例程應該設定此成員的埠驅動程式值。
AdapterInterfaceType
Storport 驅動程序不支援舊版總線。 因此,與 SCSI 埠驅動程式搭配使用的大多數適配卡介面類型對 Storport 無效。 特別是,不支援 Isa、 Eisa、 MicroChannel 和 TurboChannel 。 此外,不同於 SCSI 埠案例,與 Storport 驅動程式搭配運作的迷你埠驅動程式不需要提供 VendorIdLength、VendorId、DeviceIdLength 和 DeviceId 成員的值。
HwInitialize
迷你埠驅動程式 的 HwStorInitialize 例程指標,這是所有迷你埠驅動程式的必要進入點。
HwStartIo
迷你埠驅動程式 的 HwStorStartIo 例程指標,這是所有迷你埠驅動程式的必要進入點。
HwInterrupt
迷你埠驅動程式 的 HwStorInterrupt 例程指標,這是所有迷你埠驅動程式的必要進入點。
HwFindAdapter
迷你埠驅動程式 的 HwStorFindAdapter 例程指標,這是所有迷你埠驅動程式的必要進入點。
HwResetBus
迷你埠驅動程式 的 HwStorResetBus 例程指標,這是所有迷你埠驅動程式的必要進入點。
HwDmaStarted
Storport 驅動程序不支援從屬模式 DMA。 因此,這個成員必須是 NULL。
HwAdapterState
Storport 驅動程序不支援舊版驅動程式。 因此,這個成員必須是 NULL。
DeviceExtensionSize
針對每個配接器裝置擴充功能,指定迷你埠驅動程式所需的大小,以位元組為單位。 迷你埠驅動程式會使用其裝置擴充功能作為驅動程式決定主機總線適配卡的記憶體, (HBA) 資訊。 操作系統特定的埠驅動程式會在第一次配置擴充功能並填入零時,初始化每個裝置擴充功能一次。 它會在每個迷你埠驅動程式呼叫中傳遞 HBA 特定裝置延伸模組的指標。 指定的大小不包含每個邏輯單元記憶體要求的任何迷你埠驅動程式。 每個邏輯單元記憶體的大小是透過 SpecificLuExtensionSize 欄位指定,本主題稍後會說明。
雖然每當適配卡停止時,SCSIPort 會重新初始化裝置延伸模組,因此後續呼叫 HwScsiFindAdapter 會收到零輸出的裝置擴充功能,但 Storport 不會遵循該模型。 相反地,Storport 只會在第一次配置裝置擴充功能時將裝置延伸模組重設為零,因此只有給定適配卡的第一次呼叫 HwStorFindAdapter 會收到零的裝置擴充功能。 後續對 HwStorFindAdapter 和其他迷你埠函式的呼叫會接收裝置擴充功能,如迷你埠上次修改一樣。 這可讓迷你埠驅動程序維持 隨插即用 (PnP) 停止和重新啟動之間的適配卡狀態知識,可能會讓迷你埠驅動程序優化其初始化程式。
SpecificLuExtensionSize
指定迷你埠驅動程序針對每個邏輯單元記憶體所需的位元組大小,如果有的話。 迷你埠驅動程式可以使用其 LU 擴充功能作為驅動程式決定的邏輯單元資訊總線上周邊的記憶體。 Storport 驅動程式會初始化它以零配置的每個 LU 擴充功能。 如果迷你埠驅動程式不會維護需要記憶體的每個 LU 資訊,請將此成員保留為零。 此值是以 HBA 能夠接收 32 位位址的假設為基礎,不論控制器可以實際支持什麼。 如果 LUN 或 SRB 擴充功能需要額外的空間來處理 64 位位址,則必須先對此值進行適當的調整,才能搭配 StorPortGetUncachedExtension 等例程使用此值。
SrbExtensionSize
指定迷你埠驅動程序針對每個要求記憶體所需的大小,以位元組為單位。如果有的話。 迷你埠驅動程式可以使用 SRB 延伸模組作為驅動程式決定、要求特定資訊的記憶體,例如處理特定要求所需的數據。 Storport 驅動程式不會初始化 SRB 延伸模組,但會在它傳送至迷你埠驅動程式的每個 SRB 中設定此記憶體的指標。 HBA 硬體可以安全地存取 SRB 擴充功能。 由於使用 Storport 驅動程式的迷你埠驅動程式必須支援散佈/收集清單,而且每個 SRB 散佈/收集清單通常會配置在 SRB 延伸模組中,所以此成員很少為零。 如果迷你埠驅動程式未維護需要記憶體的每個SRB資訊,請將此成員保留為零。
此值是以 HBA 能夠接收 32 位位址的假設為基礎,不論控制器可以實際支持什麼。 如果 LUN 或 SRB 擴充功能需要額外的空間來處理 64 位位址,則必須先對此值進行適當的調整,才能搭配 StorPortGetUncachedExtension 等例程使用此值。
NumberOfAccessRanges
指定配接器使用的存取範圍數目。 每個都是記憶體位址或 I/O 埠地址的範圍。
Reserved
保留供系統使用,且無法供迷你埠驅動程式使用。
MapBuffers
指出 Storport 驅動程式是否會將 SRB 數據緩衝區地址對應至系統虛擬位址。 MapBuffers 成員可以有下列其中一個值。
值 | 意義 |
---|---|
STOR_MAP_NO_BUFFERS | 除了SRB_FUNCTION_IO_CONTROL和SRB_FUNCTION_WMI以外,請勿對應任何 SRB。 |
STOR_MAP_ALL_BUFFERS | 已過時。 這個值的效果與STOR_MAP_NON_READ_WRITE_BUFFERS相同。 |
STOR_MAP_NON_READ_WRITE_BUFFERS | 對應讀取或寫入要求以外的所有 I/O 緩衝區。 |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | 對應所有 I/O 的緩衝區,包括讀取和寫入要求。 此值從 Windows 8 開始有效。 |
NeedPhysicalAddresses
必須設定為 TRUE。 TRUE 值表示迷你埠驅動程序必須將特定類型的位址轉譯為實體位址。 使用 Storport 驅動程式的迷你埠驅動程式必須支援總線主機 DMA,因此一律需要它們才能進行地址轉譯。
TaggedQueuing
必須設定為 TRUE。 TRUE 值表示迷你埠驅動程序支援 SCSI 標記的佇列。 所有使用 Storport 驅動程式的迷你埠驅動程式都必須支援標記的佇列。
AutoRequestSense
必須是 TRUE。 TRUE 值表示 HBA 可以執行要求感知作業,而不需要明確要求。 所有使用 Storport 驅動程式的迷你埠驅動程式都必須支援 SCSI 自動要求感知。
MultipleRequestPerLu
必須設定為 TRUE。 TRUE 值表示迷你埠驅動程式可以排入每個邏輯單元的多個要求。 使用 Storport 驅動程式的迷你埠驅動程式必須支援每個邏輯單元的多個要求。
ReceiveEvent
Storport 驅動程式會忽略此成員。
VendorIdLength
Storport 驅動程式會忽略此成員,因為與 Storport 驅動程式搭配運作的迷你埠驅動程序必須支援 PnP。
VendorId
Storport 驅動程式會忽略此成員,因為與 Storport 驅動程式搭配運作的迷你埠驅動程序必須支援 PnP。
ReservedUshort
PortVersionFlags
指出支援功能的旗標。
DeviceIdLength
Storport 驅動程式會忽略此成員,因為與 Storport 驅動程式搭配運作的迷你埠驅動程序必須支援 PnP。
DeviceId
Storport 驅動程式會忽略此成員,因為與 Storport 驅動程式搭配運作的迷你埠驅動程序必須支援 PnP。
HwAdapterControl
迷你埠驅動程式 HwStorAdapterControl 例程的指標。 這是必要的例程,因為與 Storport 驅動程式搭配運作的迷你埠驅動程式需要 PnP 支援。
HwBuildIo
埠驅動程式在呼叫 miniport 驅動程式的 HwStorStartIo 例程之前,呼叫未同步處理的選擇性 HwStorBuildIo 例程指標。 此回呼專屬於實體迷你埠,而且應該由虛擬迷你埠設定為 NULL。
HwFreeAdapterResources
虛擬迷你埠驅動程式 的 HwStorFreeAdapterResources 例程指標,這是所有虛擬迷你埠驅動程式的必要進入點。 此回呼專屬於虛擬迷你埠,而且會針對實體迷你埠設定為 NULL 。
此回呼會在 Windows 8 中新增。 舊版 Windows 的虛擬迷你埠應該使用 VIRTUAL_HW_INITIALIZATION_DATA ,而不是這個結構。
HwProcessServiceRequest
虛擬迷你埠驅動程式 HwStorProcessServiceRequest 例程的指標。 此回呼專屬於虛擬迷你埠,而且會針對實體迷你埠設定為 NULL 。
此回呼會在 Windows 8 中新增。 舊版 Windows 的虛擬迷你埠應該使用 VIRTUAL_HW_INITIALIZATION_DATA ,而不是這個結構。
HwCompleteServiceIrp
虛擬迷你埠驅動程式 HwStorCompleteServiceIrp 例程的指標。 此回呼專屬於虛擬迷你埠,而且會針對實體迷你埠設定為 NULL 。
此回呼會在 Windows 8 中新增。 舊版 Windows 的虛擬迷你埠應該使用 VIRTUAL_HW_INITIALIZATION_DATA ,而不是這個結構。
HwInitializeTracing
虛擬迷你埠驅動程式 HwStorInitializeTracing 例程的指標。 此回呼專屬於虛擬迷你埠,而且會針對實體迷你埠設定為 NULL 。
此回呼會在 Windows 8 中新增。 舊版 Windows 的虛擬迷你埠應該使用 VIRTUAL_HW_INITIALIZATION_DATA ,而不是這個結構。
HwCleanupTracing
虛擬迷你埠驅動程式 HwStorCleanupTracing 例程的指標。 此回呼專屬於虛擬迷你埠,而且會針對實體迷你埠設定為 NULL 。
此回呼會在 Windows 8 中新增。 舊版 Windows 的虛擬迷你埠應該使用 VIRTUAL_HW_INITIALIZATION_DATA ,而不是這個結構。
HwTracingEnabled
埠驅動程式呼叫的選擇性 HwStorTracingEnabled 例程指標,通知迷你埠是否已啟用追蹤。
FeatureSupport
旗標,指出迷你埠支援的功能。 FeatureSupport 會設定為下列值的組合:
值 | 意義 |
---|---|
STOR_FEATURE_VIRTUAL_MINIPORT | 這是虛擬迷你埠驅動程式。 |
STOR_FEATURE_ATA_PASS_THROUGH | 迷你埠支援 ATA 通過。 |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES | 迷你埠在其 STOR_DEVICE_CAPABILITIES_EX 結構中提供完整的設定。 |
STOR_FEATURE_DUMP_POINTERS | 迷你埠支持傾印指標 SRB。 |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX | 迷你埠驅動程式不想將後綴 「SCSI 類型 裝置」 作為裝置易記名稱的一部分。 |
STOR_FEATURE_DUMP_RESUME_CAPABLE | 迷你埠的傾印功能可用於從休眠繼續。 |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD | Storport 驅動程式會從 ATA 資訊 VPD 頁面初始化 STORAGE_DEVICE_DESCRIPTOR ,而不是 INQUIRY 數據。 |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE | Storport 驅動程式會設定配接器介面類型。 |
SrbTypeFlags
旗標,指出迷你埠支援的SRB類型。 SrbTypeFlags 設定為 0 或下列值的組合:
值 | 意義 |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK | 迷你埠會使用標準 SRB。 |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK | 迷你埠支持擴充SRB。 |
AddressTypeFlags
迷你埠支持的位址配置。 目前唯一支援一個位址配置,而迷你埠必須將此成員設定為ADDRESS_TYPE_FLAG_BTL8。
值 | 意義 |
---|---|
ADDRESS_TYPE_FLAG_BTL8 | 總線、目標和 LUN (BTL) 8 位位址。 |
Reserved1
保留,設定為 0。
HwUnitControl
迷你埠驅動程式 的 HwStorUnitControl 例程指標。 埠驅動程式會使用儲存單位裝置的控制要求呼叫此例程。
備註
每個 Storport 迷你埠驅動程式的 DriverEntry 例程都必須在迷你埠驅動程式先零之後呼叫 StorPortInitialize ,然後設定 HW_INITIALIZATION_DATA的成員。
規格需求
需求 | 值 |
---|---|
標頭 | storport.h (包含 Storport.h) |