HW_INITIALIZATION_DATA-Struktur (storport.h)

Die HW_INITIALIZATION_DATA (Storport) -Struktur enthält Informationen, die speziell für jeden Miniporttreiber und die Vom Miniporttreiber verwaltete Hardware enthalten sind.

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;

Member

HwInitializationDataSize

Gibt die Größe dieser Struktur in Bytes an, wie von sizeof(HW_INITIALIZATION_DATA) zurückgegeben. Tatsächlich gibt dieses Member die Version dieser Struktur an, die vom Miniporttreiber verwendet wird. Die DriverEntry-Routine eines Miniporttreibers sollte den Wert dieses Elements für den Porttreiber festlegen.

AdapterInterfaceType

Der Storport-Treiber unterstützt keine Legacybusse. Daher sind die meisten Adapterschnittstellentypen, die mit dem SCSI-Porttreiber verwendet werden, für Storport ungültig. Insbesondere Isa, Eisa, MicroChannel und TurboChannel werden nicht unterstützt. Darüber hinaus ist im Gegensatz zum SCSI-Port kein Miniporttreiber, der mit dem Storport-Treiber arbeitet, erforderlich, um Werte für die Member VendorIdLength, VendorId,DeviceIdLength und DeviceId anzugeben .

HwInitialize

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

HwStartIo

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

HwInterrupt

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

HwFindAdapter

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

HwResetBus

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

HwDmaStarted

Der Storport-Treiber unterstützt DMA im untergeordneten Modus nicht. Daher muss dieser Member NULL sein.

HwAdapterState

Der Storport-Treiber unterstützt keine Legacytreiber. Daher muss dieser Member NULL sein.

DeviceExtensionSize

Gibt die Größe in Bytes an, die vom Miniporttreiber für die Geräteerweiterung pro Adapter erforderlich ist. Ein Miniporttreiber verwendet seine Geräteerweiterung als Speicher für vom Treiber bestimmte HBA-Informationen (Host Bus Adapter). Der betriebssystemspezifische Porttreiber initialisiert jede Geräteerweiterung einmal, wenn er die Erweiterung zum ersten Mal zuordnet, und füllt sie mit Nullen auf. Bei jedem Aufruf eines Miniporttreibers wird ein Zeiger auf die HBA-spezifische Geräteerweiterung übergeben. Die angegebene Größe enthält keinen Miniporttreiber, der pro Logischer Einheitsspeicher 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 beendet wird und nachfolgende Aufrufe von HwScsiFindAdapter eine Geräteerweiterung auf Null erhalten, folgt Storport diesem Modell nicht. Stattdessen setzt Storport die Geräteerweiterung nur bei der ersten Zuordnung auf 0 zurück, sodass nur der erste Aufruf von HwStorFindAdapter für einen bestimmten Adapter eine Geräteerweiterung auf Null erhält. Nachfolgende Aufrufe von HwStorFindAdapter und anderen Miniportfunktionen erhalten die Geräteerweiterung als zuletzt vom Miniport geändert. Dadurch kann der Miniporttreiber zwischen Plug & Play Stopps und Neustarts (PnP) Informationen über den Status des Adapters erhalten, sodass der Miniporttreiber möglicherweise seinen Initialisierungsvorgang 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 Informationen zu Peripheriegeräten im Bus verwenden. Der Storport-Treiber initialisiert jede LU-Erweiterung, die er ordnet, mit Nullen. Lassen Sie diesen Member auf 0 festgelegt, wenn der Miniporttreiber keine Lu-Informationen verwaltet, für die er Speicher benötigt. Dieser Wert basiert auf der Annahme, dass der HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn zusätzlicher Speicherplatz in den LUN- oder SRB-Erweiterungen benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesem Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtension verwendet werden.

SrbExtensionSize

Gibt die Größe in Byte an, die vom Miniporttreiber für den Speicher pro Anforderung erforderlich ist, 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 aber einen Zeiger auf diesen Speicher in jedem SRB fest, den er an den Miniporttreiber sendet. Auf eine SRB-Erweiterung kann von der HBA-Hardware sicher zugegriffen werden. Da Miniporttreiber, die mit dem Storport-Treiber arbeiten, Punkt-/Sammlungslisten unterstützen müssen und die Punkt-/Sammlungslisten pro SRB in der Regel in der SRB-Erweiterung zugeordnet werden, ist dieser Member selten null. Lassen Sie diesen Member auf 0 festgelegt, wenn der Miniporttreiber keine SRB-Informationen verwaltet, für die er Speicher benötigt.

Dieser Wert basiert auf der Annahme, dass der HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Wenn zusätzlicher Speicherplatz in den LUN- oder SRB-Erweiterungen benötigt wird, um 64-Bit-Adressen zu verarbeiten, müssen entsprechende Anpassungen an diesem Wert vorgenommen werden, bevor sie mit Routinen wie StorPortGetUncachedExtension verwendet 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 Systemnutzung und nicht für die Verwendung durch Miniporttreiber verfügbar.

MapBuffers

Gibt an, ob der Storport-Treiber SRB-Datenpufferadressen virtuellen Systemadressen zuordnet. Das MapBuffers-Element kann einen der folgenden Werte aufweisen.

Wert Bedeutung
STOR_MAP_NO_BUFFERS Ordnen Sie keine SRB zu, außer SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Veraltet. Dieser Wert hat die gleiche Auswirkung wie STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Ordnen Sie den Puffer für alle E/A-Vorgänge mit Ausnahme von Lese- oder Schreibanforderungen zu.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Ordnen Sie den Puffer für alle E/A-Vorgänge einschließlich Lese- und Schreibanforderungen zu. Dieser Wert ist ab Windows 8 gültig.

NeedPhysicalAddresses

Muss auf TRUE festgelegt werden. Der Wert TRUE gibt an, dass der Miniporttreiber bestimmte Arten von Adressen in physische Adressen übersetzen muss. Miniporttreiber, die mit dem Storport-Treiber arbeiten, müssen bus-master DMA unterstützen, sodass sie immer eine Adressübersetzung durchführen müssen.

TaggedQueuing

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

AutoRequestSense

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

MultipleRequestPerLu

Muss auf TRUE festgelegt werden. Der Wert 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 logischer Einheit unterstützen.

ReceiveEvent

Der Storport-Treiber ignoriert diesen Member.

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 zur Angabe unterstützter Features.

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 eine 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, die ein erforderlicher Einstiegspunkt für alle virtuellen Miniporttreiber ist. Dieser Rückruf ist spezifisch für virtuelle Miniports und 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 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 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 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 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 informieren, ob die Ablaufverfolgung aktiviert ist oder nicht.

FeatureSupport

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

Wert Bedeutung
STOR_FEATURE_VIRTUAL_MINIPORT Dies ist ein virtueller Miniporttreiber.
STOR_FEATURE_ATA_PASS_THROUGH Der Miniport unterstützt ATA-Passthrough.
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES Der Miniport bietet vollständige Einstellungen in seiner STOR_DEVICE_CAPABILITIES_EX Struktur.
STOR_FEATURE_DUMP_POINTERS Der Miniport unterstützt die Dumpzeiger-SRBs.
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX Der Miniporttreiber möchte nicht das Suffix " SCSI-Typ Gerät" als Teil des Anzeigenamens des Geräts.
STOR_FEATURE_DUMP_RESUME_CAPABLE Die Dumpfunktion des Miniports ist für den Fortsetzen aus dem Ruhezustand funktionsfähig.
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD Der Storport-Treiber initialisiert den STORAGE_DEVICE_DESCRIPTOR von der Seite ATA Information VPD anstelle von INQUIRY-Daten.
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE Der Storport-Treiber legt den Adapterschnittstellentyp fest.

SrbTypeFlags

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

Wert Bedeutung
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK Der Miniport verwendet Standard-SRBs.
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK Der Miniport unterstützt erweiterte SRBs.

AddressTypeFlags

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

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

Reserved1

Reserviert, auf 0 festgelegt.

HwUnitControl

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

Hinweise

Die DriverEntry-Routine jedes Storport-Miniport-Treibers muss StorPortInitialize aufrufen, nachdem der Miniporttreiber zuerst auf null gesetzt und dann die Member von HW_INITIALIZATION_DATA festgelegt hat.

Anforderungen

Anforderung Wert
Header storport.h (einschließlich Storport.h)