Freigeben über


HW_INITIALIZATION_DATA Struktur (storport.h)

Die HW_INITIALIZATION_DATA (Storport) Struktur enthält Informationen speziell für jeden Miniporttreiber und die Hardware, die der Miniporttreiber verwaltet.

Syntax

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;

Angehörige

HwInitializationDataSize

Gibt die Größe dieser Struktur in Byte an, wie von Sizeof(HW_INITIALIZATION_DATA) zurückgegeben wird. In Der Tat gibt dieses Element die Version dieser Struktur an, die vom Miniporttreiber verwendet wird. Die DriverEntry-Routine eines Miniporttreibers sollte den Wert dieses Mitglieds für den Porttreiber festlegen.

AdapterInterfaceType

Der Storport-Treiber unterstützt keine älteren Busse. Daher sind die meisten adapterschnittstellentypen, die mit dem SCSI-Porttreiber verwendet werden, für Storport ungültig. Insbesondere werden Isa, Eisa, MicroChannelund TurboChannel- nicht unterstützt. Im Gegensatz zum SCSI-Port-Fall ist ein Miniporttreiber, der mit dem Storport-Treiber arbeitet, nicht erforderlich, um Werte für die VendorIdLength, VendorId, DeviceIdLengthund DeviceId Member zu liefern.

HwInitialize

Zeiger auf die HwStorInitialize Routine des Miniporttreibers, bei der es sich um einen erforderlichen Einstiegspunkt für alle Miniporttreiber handelt.

HwStartIo

Zeiger auf die HwStorStartIo-Routine des Miniporttreibers, die für alle Miniporttreiber ein erforderlicher Einstiegspunkt ist.

HwInterrupt

Zeiger auf die HwStorInterrupt Routine des Miniporttreibers, bei der es sich um einen erforderlichen Einstiegspunkt für alle Miniporttreiber handelt.

HwFindAdapter

Zeiger auf den HwStorFindAdapter Routine des Miniporttreibers, der ein erforderlicher Einstiegspunkt für alle Miniporttreiber ist.

HwResetBus

Zeiger auf den HwStorResetBus Routine des Miniporttreibers, der ein erforderlicher Einstiegspunkt für alle Miniporttreiber ist.

HwDmaStarted

Der Storport-Treiber unterstützt keinen untergeordneten DMA-Modus. Daher muss dieses Element NULL-sein.

HwAdapterState

Der Storport-Treiber unterstützt keine Legacytreiber. Daher muss dieses Element NULL-sein.

DeviceExtensionSize

Gibt die Größe (in Byte) an, die vom Miniporttreiber für die Erweiterung pro Adaptergerät erforderlich ist. Ein Miniporttreiber verwendet seine Geräteerweiterung als Speicher für treiberbestimmte Hostbusadapterinformationen (HBA). Der betriebssystemspezifische Porttreiber initialisiert jede Geräteerweiterung einmal, wenn sie die Erweiterung zuerst zuweist und sie mit Nullen ausfüllt. Er übergibt einen Zeiger auf die HBA-spezifische Geräteerweiterung in jedem Aufruf eines Miniporttreibers. Die angegebene Größe enthält keinen Miniporttreiber, der pro Logischer Einheit angefordert wird. Die Größe des Speichers pro logischer Einheit wird über das feld SpecificLuExtensionSize angegeben, das weiter unten in diesem Thema beschrieben wird.

Obwohl SCSIPort die Geräteerweiterung immer dann neu initialisiert, wenn der Adapter angehalten wird und somit nachfolgende Aufrufe an HwScsiFindAdapter eine Null-Out-Geräteerweiterung erhalten, folgt Storport diesem Modell nicht. Stattdessen setzt Storport die Geräteerweiterung nur bei der ersten Zuordnung auf Null zurück. Daher erhält nur der erste Aufruf von HwStorFindAdapter für einen bestimmten Adapter eine Null-Geräteerweiterung. Nachfolgende Aufrufe an HwStorFindAdapter und andere Miniportfunktionen erhalten die Geräteerweiterung als zuletzt geändert vom Miniport. Auf diese Weise kann der Miniporttreiber wissen, wie der Adapter zwischen Plug- und Play (PnP) angehalten und neu gestartet wird, wodurch der Miniporttreiber möglicherweise das Initialisierungsverfahren optimieren kann.

SpecificLuExtensionSize

Gibt die Größe in Byte an, die der Miniporttreiber für den Speicher pro logischer Einheit benötigt, falls vorhanden. Ein Miniporttreiber kann seine LU-Erweiterungen als Speicher für treiberbestimmte Wahrheitseinheitsinformationen zu Peripheriegeräten auf dem Bus verwenden. Der Storport-Treiber initialisiert jede LU-Erweiterung, die sie mit Nullen zuordnet. Lassen Sie dieses Element auf Null festgelegt, wenn der Miniporttreiber keine Lu-Informationen verwaltet, für die er Speicher benötigt. Dieser Wert basiert auf der Annahme, dass die HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn in den LUN- oder SRB-Erweiterungen zusätzlichen Speicherplatz benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesen Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtensionverwendet werden.

SrbExtensionSize

Gibt die Größe (in Byte) an, die der Miniporttreiber für den Speicher pro Anforderung benötigt, falls vorhanden. Ein Miniporttreiber kann SRB-Erweiterungen als Speicher für treiberbestimmte, anforderungsspezifische Informationen verwenden, z. B. Daten, die für die Verarbeitung einer bestimmten Anforderung erforderlich sind. Der Storport-Treiber initialisiert keine SRB-Erweiterungen, legt jedoch einen Zeiger auf diesen Speicher in jedem SRB fest, der an den Miniporttreiber gesendet wird. Auf eine SRB-Erweiterung kann über die HBA-Hardware sicher zugegriffen werden. Da Miniporttreiber, die mit dem Storport-Treiber arbeiten, Punkt-/Sammellisten unterstützen müssen, und die Listen pro SRB punkt/gather in der Regel in der SRB-Erweiterung zugeordnet werden, ist dieses Element selten null. Lassen Sie dieses Element auf Null festgelegt, wenn der Miniporttreiber keine SRB-Informationen pro SRB verwaltet, für die er Speicher benötigt.

Dieser Wert basiert auf der Annahme, dass die HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn in den LUN- oder SRB-Erweiterungen zusätzlichen Speicherplatz benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesen Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtensionverwendet werden.

NumberOfAccessRanges

Gibt an, wie viele Zugriffsbereiche der Adapter verwendet. Jede ist ein Bereich von Speicheradressen oder E/A-Portadressen.

Reserved

Reserviert für die Systemverwendung und nicht für die Verwendung durch Miniporttreiber.

MapBuffers

Gibt an, ob der Storport-Treiber SRB-Datenpufferadressen system virtual addresses zuordnet. Der MapBuffers- Member kann einen der folgenden Werte aufweisen.

Wert Bedeutung
STOR_MAP_NO_BUFFERS (0) Ordnen Sie keine SRB mit Ausnahme von SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI zu.
STOR_MAP_ALL_BUFFERS (1) Obsolet. Dieser Wert hat dieselbe Auswirkung wie STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS (2) Ordnen Sie den Puffer für alle E/A-Vorgänge zu, mit Ausnahme von Lese- oder Schreibanforderungen.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) Ordnen Sie den Puffer für alle E/A-Vorgänge einschließlich Lese- und Schreibanforderungen zu. Dieser Wert ist gültig, beginnend mit Windows 8.

NeedPhysicalAddresses

Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber bestimmte Adresstypen in physische Adressen übersetzen muss. Miniport-Treiber, die mit dem Storport-Treiber arbeiten, müssen Busmaster-DMA unterstützen, sodass sie immer für die Adressübersetzung erforderlich sind.

TaggedQueuing

Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber SCSI-markierte Warteschlange unterstützt. Alle Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen markierte Warteschlangen unterstützen.

AutoRequestSense

Muss TRUEsein. Ein Wert von TRUE gibt an, dass die HBA einen Anforderungsoptimierungsvorgang ausführen kann, ohne dass eine explizite Anforderung erforderlich ist. Alle Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen SCSI Auto-Request Sense unterstützen.

MultipleRequestPerLu

Muss auf TRUE-festgelegt sein. Ein Wert von TRUE gibt an, dass der Miniporttreiber mehrere Anforderungen pro logische Einheit in die Warteschlange stellen kann. Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen mehrere Anforderungen pro logische Einheit unterstützen.

ReceiveEvent

Der Storport-Treiber ignoriert dieses Element.

VendorIdLength

Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.

VendorId

Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.

ReservedUshort

PortVersionFlags

Flags, um unterstützte Features anzugeben.

DeviceIdLength

Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.

DeviceId

Der Storport-Treiber ignoriert dieses Element, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP unterstützen müssen.

HwAdapterControl

Zeiger auf die HwStorAdapterControl Routine des Miniporttreibers. Dies ist eine erforderliche Routine, da Miniporttreiber, die mit dem Storport-Treiber arbeiten, PnP-Unterstützung erfordern.

HwBuildIo

Zeiger auf eine optionale HwStorBuildIo Routine, die der Porttreiber aufruft, um die nicht synchronisierte Verarbeitung durchzuführen, bevor die HwStorStartIo Routine des Miniporttreibers aufgerufen wird. Dieser Rückruf ist spezifisch für physische Miniports und sollte von virtuellen Miniports auf NULL festgelegt werden.

HwFreeAdapterResources

Ein Zeiger auf die HwStorFreeAdapterResources-Routine des virtuellen Miniporttreibers, bei dem es sich um einen erforderlichen Einstiegspunkt für alle virtuellen Miniporttreiber handelt. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.

Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.

HwProcessServiceRequest

Ein Zeiger auf die HwStorProcessServiceRequest-Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.

Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.

HwCompleteServiceIrp

Ein Zeiger auf die HwStorCompleteServiceIrp Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.

Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.

HwInitializeTracing

Ein Zeiger auf die HwStorInitializeTracing-Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.

Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.

HwCleanupTracing

Ein Zeiger auf die HwStorCleanupTracing Routine des virtuellen Miniporttreibers. Dieser Rückruf ist spezifisch für virtuelle Miniports und wird für physische Miniports auf NULL- festgelegt.

Dieser Rückruf wird in Windows 8 hinzugefügt. Virtuelle Miniports für frühere Versionen von Windows sollten anstelle dieser Struktur VIRTUAL_HW_INITIALIZATION_DATA verwenden.

HwTracingEnabled

Ein Zeiger auf eine optionale HwStorTracingEnabled Routine, die der Porttreiber aufruft, um den Miniport darüber zu benachrichtigen, ob die Ablaufverfolgung aktiviert ist oder nicht.

FeatureSupport

Flags, die Features angeben, die vom Miniport unterstützt werden. FeatureSupport- wird auf eine Kombination dieser Werte festgelegt:

Wert Bedeutung
STOR_FEATURE_VIRTUAL_MINIPORT (0x00000001) Dies ist ein virtueller Miniporttreiber.
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) Der Miniport unterstützt DEN ATA-Durchlauf.
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES (0x00000004) Der Miniport bietet vollständige Einstellungen in der STOR_DEVICE_CAPABILITIES_EX Struktur.
STOR_FEATURE_DUMP_POINTERS (0x00000008) Der Miniport unterstützt die Dumppointer-SRBs.
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) Der Miniporttreiber möchte das Suffix "SCSI Typ Device" nicht als Teil des Anzeigenamens des Geräts verwenden.
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) Die Miniport-Speicherabbildfunktion ist für die Fortsetzung aus dem Ruhezustand funktionsfähig.
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) Der Storport-Treiber initialisiert die STORAGE_DEVICE_DESCRIPTOR von der ATA Information VPD-Seite anstelle von UNTERSUCHUNGsdaten.
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) Der Miniporttreiber möchte SRBEX_DATA_IO_INFO in einem SRBEX,falls verfügbar.
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) Der Miniporttreiber kann adapterControl-Aufruf von Storport sicher verarbeiten, bevor HwFindAdapter empfangen wird.
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT (0x00000200) Der Miniporttreiber erfordert keine IO-Portressource für den Adapter.
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) Der Miniporttreiber möchte, dass die HwDeviceExtension im Dumpmodus 16 Byte ausgerichtet ist.
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) Der Miniport möchte, dass Storport den Schnittstellentyp des Adapters festlegen soll.
STOR_FEATURE_DUMP_INFO (0x00001000) Der Miniporttreiber unterstützt die Speicherabbildinformationen-SRBs.
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) Der Miniporttreiber unterstützt die Zuweisung von DMA an physischen Arbeitsspeicher ohne Grenzen.
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) Der Miniporttreiber unterstützt NVMe-basierte Speicheradapter.
STOR_FEATURE_REPORT_INTERNAL_DATA (0x00008000) Der Miniporttreiber unterstützt die Berichterstellung interner Daten.
STOR_FEATURE_EARLY_DUMP (0x00010000) Der Miniporttreiber unterstützt die frühe Absturzabbildgenerierung.
STOR_FEATURE_NVME_ICE (0x00020000) Der Miniporttreiber unterstützt NVMe ICE.

SrbTypeFlags

Flags, die die vom Miniport unterstützten SRB-Typen angeben. SrbTypeFlags auf 0 oder eine Kombination der folgenden Werte festgelegt ist:

Wert Bedeutung
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) Der Miniport verwendet standard-SRBs.
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) Der Miniport unterstützt erweiterte SRBs.

AddressTypeFlags

Die vom Miniport unterstützten Adressschemas. Derzeit wird das einzige Adressschema unterstützt, und der Miniport muss dieses Element auf ADDRESS_TYPE_FLAG_BTL8 festlegen.

Wert Bedeutung
ADDRESS_TYPE_FLAG_BTL8 (0x1) 8-Bit-Adressierung von Bus, Target und LUN (BTL).

Reserved1

Reserviert, auf 0 festgelegt.

HwUnitControl

Ein Zeiger der HwStorUnitControl Routine des Miniporttreibers. Der Porttreiber ruft diese Routine mit einer Steuerungsanforderung für ein Speichergerät auf.

Bemerkungen

Jeder Storport Miniport-Treiber DriverEntry Routine muss StorPortInitialize aufrufen, nachdem der Miniporttreiber zuerst null 00 und dann die Member von HW_INITIALIZATION_DATAfestgelegt hat.

Anforderungen

Anforderung Wert
Header- storport.h (include Storport.h)