共用方式為


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 驅動程式搭配運作的迷你埠驅動程式不需要提供 VendorIdLengthVendorIdDeviceIdLengthDeviceId 成員的值。

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 (0) 除了 SRB_FUNCTION_IO_CONTROL 和 SRB_FUNCTION_WMI 以外,請勿對應任何 SRB。
STOR_MAP_ALL_BUFFERS (1) 過時。 這個值的效果與STOR_MAP_NON_READ_WRITE_BUFFERS相同。
STOR_MAP_NON_READ_WRITE_BUFFERS (2) 對應所有 I/O 的緩衝區,但讀取或寫入要求除外。
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) 對應所有 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

選擇性 HwStorBuildIo 例程的指標,埠驅動程式在呼叫迷你埠驅動程式的 HwStorStartIo 例程之前,先呼叫進行未同步處理的例程。 此回呼專屬於實體迷你埠,應該由虛擬迷你埠設定為 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(0x00000001) 這是虛擬迷你埠驅動程式。
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) 迷你埠支援 ATA 傳遞。
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES(0x00000004) 迷你埠在其 STOR_DEVICE_CAPABILITIES_EX 結構中提供完整的設定。
STOR_FEATURE_DUMP_POINTERS(0x00000008) 迷你埠支持傾印指標 SRB。
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) 迷你埠驅動程式不希望後置詞 「SCSI 類型 Device」 作為裝置易記名稱的一部分。
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) 迷你埠的傾印功能可用於從休眠中繼續。
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) Storport 驅動程式會從 ATA 資訊 VPD 頁面初始化 STORAGE_DEVICE_DESCRIPTOR,而不是從 INQUIRY 數據初始化。
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) 如果可用,迷你埠驅動程式想要在 SRBEX 中SRBEX_DATA_IO_INFO。
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) 迷你埠驅動程式可以在接收 HwFindAdapter 之前,安全地處理 Storport 的 AdapterControl 呼叫。
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT(0x00000200) 迷你埠驅動程式不需要其配接器的 IO 埠資源。
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) 迷你埠驅動程式希望其 HwDeviceExtension 在傾印模式中對齊 16 個字節。
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) 迷你埠希望 Storport 設定配接器介面類型。
STOR_FEATURE_DUMP_INFO(0x00001000) 迷你埠驅動程序支持傾印資訊 SRB。
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) 迷你埠驅動程序支援將 DMA 配置給沒有界限的實體記憶體。
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) 迷你埠驅動程序支援 NVMe 型記憶體配接器。
STOR_FEATURE_REPORT_INTERNAL_DATA(0x00008000) 迷你埠驅動程式支援報告內部數據。
STOR_FEATURE_EARLY_DUMP (0x00010000) 迷你埠驅動程式支援早期損毀傾印產生。
STOR_FEATURE_NVME_ICE (0x00020000) 迷你埠驅動程序支援 NVMe ICE。

SrbTypeFlags

旗標,表示迷你埠支援的SRB類型。 SrbTypeFlags 設定為 0 或下列值的組合:

價值 意義
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) 迷你埠會使用標準 SRB。
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) 迷你埠支持擴充的 SRB。

AddressTypeFlags

迷你埠支持的位址配置。 目前僅支援一個位址配置,而迷你埠必須將此成員設定為ADDRESS_TYPE_FLAG_BTL8。

價值 意義
ADDRESS_TYPE_FLAG_BTL8 (0x1) 總線、目標和 LUN (BTL) 8 位尋址。

Reserved1

保留,設定為 0。

HwUnitControl

迷你埠驅動程式 HwStorUnitControl 例程的指標。 埠驅動程式會使用儲存單位裝置的控制要求來呼叫此例程。

言論

每個 Storport 迷你埠驅動程式的 DriverEntry 例程都必須呼叫 StorPortInitialize,然後先將迷你埠驅動程式設為零,然後設定 HW_INITIALIZATION_DATA的成員。

要求

要求 價值
標頭 storport.h (包括 Storport.h)