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) |