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 無效。 特別是,不支援 IsaEisaMicroChannelTurboChannel 。 此外,不同於 SCSI 埠案例,與 Storport 驅動程式搭配運作的迷你埠驅動程式不需要提供 VendorIdLengthVendorId、DeviceIdLengthDeviceId 成員的值

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

必須設定為 TRUETRUE 值表示迷你埠驅動程序必須將特定類型的位址轉譯為實體位址。 使用 Storport 驅動程式的迷你埠驅動程式必須支援總線主機 DMA,因此一律需要它們才能進行地址轉譯。

TaggedQueuing

必須設定為 TRUETRUE 值表示迷你埠驅動程序支援 SCSI 標記的佇列。 所有使用 Storport 驅動程式的迷你埠驅動程式都必須支援標記的佇列。

AutoRequestSense

必須是 TRUETRUE 值表示 HBA 可以執行要求感知作業,而不需要明確要求。 所有使用 Storport 驅動程式的迷你埠驅動程式都必須支援 SCSI 自動要求感知。

MultipleRequestPerLu

必須設定為 TRUETRUE 值表示迷你埠驅動程式可以排入每個邏輯單元的多個要求。 使用 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)