PORT_CONFIGURATION_INFORMATION-Struktur (storport.h)
PORT_CONFIGURATION_INFORMATION enthält Konfigurationsinformationen für einen Hostbusadapter (Host Bus Adapter, HBA).
Syntax
typedef struct _PORT_CONFIGURATION_INFORMATION {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
ULONG DmaChannel;
ULONG DmaPort;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
ACCESS_RANGE( ) *AccessRanges[];
PVOID MiniportDumpData;
PVOID Reserved;
UCHAR NumberOfBuses;
CCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
UCHAR MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
UCHAR SrbType;
UCHAR AddressType;
UCHAR ReservedUchars[2];
ULONG SlotNumber;
ULONG BusInterruptLevel2;
ULONG BusInterruptVector2;
KINTERRUPT_MODE InterruptMode2;
ULONG DmaChannel2;
ULONG DmaPort2;
DMA_WIDTH DmaWidth2;
DMA_SPEED DmaSpeed2;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
UCHAR Dma64BitAddresses;
BOOLEAN ResetTargetSupported;
UCHAR MaximumNumberOfLogicalUnits;
BOOLEAN WmiDataProvider;
STOR_SYNCHRONIZATION_MODEL SynchronizationModel;
PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
INTERRUPT_SYNCHRONIZATION_MODE InterruptSynchronizationMode;
MEMORY_REGION DumpRegion;
ULONG RequestedDumpBufferSize;
BOOLEAN VirtualDevice;
UCHAR DumpMode;
UCHAR DmaAddressWidth;
ULONG ExtendedFlags1;
ULONG MaxNumberOfIO;
ULONG MaxIOsPerLun;
ULONG InitialLunQueueDepth;
ULONG BusResetHoldTime;
ULONG FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
Member
Length
Größe der PORT_CONFIGURATION_INFORMATION-Struktur in Byte. Dieses Element wird vom Storport-Treiber initialisiert und fungiert auch als Strukturversion.
SystemIoBusNumber
Systemseitig zugewiesene Nummer des E/A-Busses, mit dem der HBA verbunden ist. Miniporttreiber dürfen dieses Element nicht ändern. Sein Wert ist systemseitig zugewiesen, da die Plattform möglicherweise über mehrere E/A-Busse des angegebenen AdapterInterfaceType verfügt.
AdapterInterfaceType
Die E/A-Busschnittstelle. Storport initialisiert diesen Member mit dem Wert, der vom Miniporttreiber in der HW_INITIALIZATION_DATA-Struktur angegeben wird. Miniporttreiber dürfen dieses Element nicht ändern.
BusInterruptLevel
Die busrelative Interruptanforderungsebene. Storport macht keine Annahmen über die Interruptnutzung des HBA, sodass der Standardwert 0 (null) ist. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
BusInterruptVector
Der vom HBA zurückgegebene busrelative Vektor. Storport macht keine Annahmen über die Interruptnutzung des HBA, sodass der Standardwert 0 (null) ist. Dieser Member ist für Treiber irrelevant, die das BusInterruptLevel-Element für ihre HBAs einrichten. Es ist relevant für HBAs für Typen von E/A-Bussen, die Interruptvektoren verwenden, z. B. PCIBus. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
InterruptMode
Gibt an, ob der HBA LevelSensitive - oder Latched-Interrupts (manchmal auch als "edge-triggered" bezeichnet) verwendet. Storport initialisiert diesen Member mit einem geeigneten Wert für den Bus und das Gerät, z. B. LevelSensitive für PCIBus. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
MaximumTransferLength
Maximale Anzahl von Bytes, die der HBA in einem einzelnen Übertragungsvorgang übertragen kann. Standardmäßig ist der Wert dieses Members SP_UNINITIALIZED_VALUE, was eine unbegrenzte maximale Übertragungsgröße angibt. Wenn der HBA über eingeschränkte Übertragungsunterstützung verfügt, muss ein Miniporttreiber diesen Member gemäß der Übertragungskapazität des HBA zurücksetzen. Wenn die HwStorInterrupt-Routine eines Miniporttreibers Interrupts für den HBA nicht deaktivieren kann, kann dieses Element während der Treiberentwicklung angepasst werden, um sicherzustellen, dass die in der ISR des Miniporttreibers verbrachte Zeit nicht die Gesamtsystemleistung beeinträchtigt.
NumberOfPhysicalBreaks
Maximale Anzahl physischer Seiten, die der Speicheradapter in einer einzelnen Übertragung verwalten kann (d. h. der Umfang seiner Scatter-/Gather-Unterstützung). Standardmäßig ist der Wert dieses Members 0x11. Der Miniporttreiber muss diesen Member entsprechend der Funktion des Speicheradapters zurücksetzen.
DmaChannel
Der DMA-Kanal, der von einem untergeordneten HBA verwendet wird. Standardmäßig ist der Wert dieses Members SP_UNINITIALIZED_VALUE. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
DmaPort
Der DMA-Port, der von einem untergeordneten HBA verwendet wird. Standardmäßig ist der Wert dieses Members SP_UNINITIALIZED_VALUE. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
DmaWidth
Die Breite von DMA-Übertragungen wird übertragen, wenn der HBA DMA verwendet. Standardmäßig ist der Wert dieses Members null. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
DmaSpeed
Die DMA-Datenübertragungsgeschwindigkeit für Eisa HBAs. Storport initialisiert diesen Member, und Miniporttreiber dürfen ihn nicht ändern.
AlignmentMask
Maske, die die Ausrichtungseinschränkungen für Puffer angibt, die vom HBA für Übertragungsvorgänge erforderlich sind. Einige gültige Maskenwerte sind 0 (Byte ausgerichtet), 1 (Wort ausgerichtet), 3 (DWORD ausgerichtet) und 7 (doppelteS DWORD ausgerichtet). Der Miniporttreiber sollte diese Maske festlegen, wenn der HBA scatter/gather unterstützt. Die folgenden zulässigen Ausrichtungsmaskenwerte sind in wdm.h definiert:
Wert | Bedeutung |
---|---|
FILE_BYTE_ALIGNMENT (0x00000000) | Daten sind byteausgeglichen (keine Ausrichtungsanforderungen für das Gerät) |
FILE_WORD_ALIGNMENT (0x00000001) | Daten müssen an einer 2-Byte-Grenze ausgerichtet werden. |
FILE_LONG_ALIGNMENT (0x00000003) | Daten müssen an einer 4-Byte-Grenze ausgerichtet werden. |
FILE_QUAD_ALIGNMENT (0x00000007) | Daten müssen an einer 8-Byte-Grenze ausgerichtet werden. |
FILE_OCTA_ALIGNMENT (0x0000000f) | Daten müssen an einer 16-Byte-Grenze ausgerichtet werden. |
FILE_32_BYTE_ALIGNMENT (0x0000001f) | Daten müssen an einer 32-Byte-Grenze ausgerichtet werden. |
FILE_64_BYTE_ALIGNMENT (0x0000003f) | Daten müssen an einer 64-Byte-Grenze ausgerichtet werden. |
FILE_128_BYTE_ALIGNMENT (0x0000007f) | Daten müssen an einer 128-Byte-Grenze ausgerichtet werden. |
FILE_256_BYTE_ALIGNMENT (0x000000ff) | Daten müssen an einer 256-Byte-Grenze ausgerichtet werden. |
FILE_512_BYTE_ALIGNMENT (0x000001ff) | Daten müssen an einer 512-Byte-Grenze ausgerichtet werden. |
NumberOfAccessRanges
Gibt die Anzahl der AccessRanges-Elemente im Array an.
AccessRanges
Zeiger auf ein Array von elementen vom Typ ACCESS_RANGE. Storport weist Arbeitsspeicher für die Zugriffsbereiche zu und initialisiert diesen Member. Miniporttreiber dürfen dieses Element nicht ändern.
MiniportDumpData
Zeiger auf einen Speicherabbildkontext, der während eines Absturzdumps oder eines Ruhezustands verwendet wird.
Reserved
Reserviert für die Systemverwendung (vorab Windows 8).
NumberOfBuses
Anzahl der vom Adapter gesteuerten Busse. Standardmäßig ist der Wert dieses Members null. Dieser Member hat den Höchstwert SCSI_MAXIMUM_BUSES_PER_ADAPTER. Dieses Mitglied ist ab Windows 8 verfügbar.
InitiatorBusId[8]
Die Initiatorbus-ID. Wenn die Eingabe InitiatorBusId[0] den Wert SP_UNINITIALIZED_VALUE hat, kann der Miniporttreiber einen Standardwert zuweisen, wenn sein HBA nicht die Verwendung bestimmter Werte erfordert, die durch Abfragen des HBA bestimmt wurden. Andernfalls sollte der Miniporttreiber nach Möglichkeit einen vom Porttreiber zugewiesenen Wert ungleich null verwenden. In der Regel wird dieser Wert durch den Wert begrenzt, der für MaximumNumberOfTargets festgelegt ist.
ScatterGather
Bei TRUE unterstützt der HBA scatter/gather. Storport initialisiert dieses Element auf TRUE , da seine Miniporttreiber scatter/gather unterstützen müssen. Miniport-Treiber, die mit Storport arbeiten, dürfen diesen Wert nicht ändern. (HINWEIS: In Windows-Versionen vor Windows Server 2008 R2 und Windows 7 ist dieses Element auf FALSE festgelegt. In diesem Fall müssen Miniporttreiber diesen Member auf TRUE festlegen. Wenn Sie diesen Member nicht auf TRUE festlegen, kann das HBA-Gerät nicht gestartet werden.)
Master
Bei TRUE ist der HBA ein master Bus. Storport initialisiert dieses Element auf TRUE , da seine Miniporttreiber das Busmastering-DMA unterstützen müssen. Miniport-Treiber, die mit Storport arbeiten, dürfen diesen Wert nicht ändern. (HINWEIS: In Windows-Versionen vor Windows Server 2008 R2 und Windows 7 ist dieses Element auf FALSE festgelegt. In diesem Fall müssen Miniporttreiber diesen Member auf TRUE festlegen. Wenn Sie diesen Member nicht auf TRUE festlegen, kann das HBA-Gerät nicht gestartet werden.)
CachesData
Bei TRUE speichert der HBA Daten zwischen oder verwaltet den zwischengespeicherten Zustand auf den Peripheriegeräten. Wenn FALSE festgelegt ist, speichert der HBA keine Daten zwischen oder verwaltet den zwischengespeicherten Zustand auf den Peripheriegeräten. Standardmäßig ist der Wert dieses Members FALSE. Wenn dies auf TRUE zurückgesetzt wird, benachrichtigt Storport den Miniporttreiber, wenn bestimmte Systemereignisse auftreten, z. B. Dateisystemcacheleerungen.
AdapterScansDown
Storport ignoriert diesen Member.
AtdiskPrimaryClaimed
Storport verwendet diesen Member nicht, und seine Miniporttreiber dürfen es nicht festlegen.
AtdiskSecondaryClaimed
Storport verwendet diesen Member nicht, und seine Miniporttreiber dürfen es nicht festlegen.
Dma32BitAddresses
Bei TRUE verfügt der HBA über 32 Adresszeilen und kann auf arbeitsspeicher mit physischen Adressen zugreifen, die größer als 0x00FFFFFF sind. Storport initialisiert diesen Member auf TRUE, da seine Miniporttreiber DMA mit Busbreite unterstützen müssen. Miniporttreiber dürfen diesen Wert nicht ändern, da dies die DMA-Standardadressierung ist, wenn kein Wert für Dma64BitAddresses festgelegt ist. HINWEIS: Wenn nur 32-Bit-Adressen von der Gerätehardware unterstützt werden, muss Dma64BitAddresses auf 0 festgelegt werden.
DemandMode
Gibt an, ob der DMA-Systemcontroller nicht für Einzelzyklusvorgänge, sondern für den Bedarfsmodus programmiert werden soll. Storport initialisiert diesen Member auf FALSE, da er DMA im untergeordneten Modus nicht unterstützt. Miniport-Treiber dürfen diesen Wert nicht ändern.
MapBuffers
Gibt an, ob Storport SRB-Datenpufferadressen virtuellen Systemadressen zuordnet. Der Miniporttreiber legt diesen Member auf einen der folgenden Werte fest, um die Zuordnung für SRB-Datenpufferadressen zu steuern.
Wert | Bedeutung |
---|---|
STOR_MAP_NO_BUFFERS | Ordnet den Puffer nur für SRB_FUNCTION_IO_CONTROL und SRB_FUNCTION_WMI zu. |
STOR_MAP_ALL_BUFFERS | Veraltet. Dieser Wert hat die gleiche Auswirkung wie STOR_MAP_NON_READ_WRITE_BUFFERS. |
STOR_MAP_NON_READ_WRITE_BUFFERS | Ordnet den Puffer für alle E/A-Vorgänge mit Ausnahme von Lese- und Schreibanforderungen zu. |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | Ordnet den Puffer für alle E/A-Vorgänge einschließlich Lese- und Schreibanforderungen zu. Miniports, die den Start unterstützen, müssen eine Lese- oder Schreibanforderung von PAGE_SIZE verarbeiten. Diese Lese- oder Schreibanforderungen müssen immer erfolgreich abgeschlossen werden. Storport kann den Puffer unter geringen Systemspeicherbedingungen möglicherweise nicht zuordnen. In diesem Fall ist der DataBuffer-Member im SRB NULL. |
NeedPhysicalAddresses
Bei TRUE muss der Miniporttreiber virtuelle Adressen in physische Adressen übersetzen, wie für den HBA erforderlich. Storport initialisiert dieses Element auf TRUE, da seine Miniporttreiber Scatter-/Gather-Listen unterstützen müssen. Miniport darf diesen Wert nicht ändern.
TaggedQueuing
Bei TRUE unterstützt der HBA das Warteschlangen mehrerer Anforderungen mit SCSI-Tags. Storport initialisiert dieses Element auf TRUE , da seine Miniporttreiber das Tag-Warteschlangen-Queuing unterstützen müssen. Miniport-Treiber dürfen diesen Wert nicht ändern.
AutoRequestSense
Bei TRUE unterstützt der HBA die automatische Anforderungsoptimierung. Storport initialisiert dieses Element auf TRUE , da seine Miniporttreiber die Automatische Anforderungsoptimierung unterstützen müssen. Miniport-Treiber dürfen diesen Wert nicht ändern.
MultipleRequestPerLu
Bei TRUE unterstützt der HBA mehrere Anforderungen pro logischer Einheit. Storport initialisiert dieses Element auf TRUE , da seine Miniporttreiber mehrere Anforderungen unterstützen müssen, die an eine logische Einheit ausgegeben werden. Miniport-Treiber dürfen diesen Wert nicht ändern.
ReceiveEvent
Storport verwendet diesen Member nicht, und seine Miniporttreiber dürfen es nicht festlegen.
RealModeInitialized
Storport verwendet diesen Member nicht, und seine Miniporttreiber dürfen es nicht festlegen.
BufferAccessScsiPortControlled
Storport verwendet diesen Member nicht, und seine Miniporttreiber dürfen es nicht festlegen.
MaximumNumberOfTargets
Anzahl der Zielperipheriegeräte, die der Adapter steuern kann. Standardmäßig ist der Wert dieses Members SCSI_MAXIMUM_TARGETS_PER_BUS. Ein Miniporttreiber kann diesen Member auf einen niedrigeren Wert zurücksetzen, wenn der HBA über eingeschränktere Funktionen verfügt, oder auf einen höheren Wert, was angibt, dass der HBA über erweiterte Busfunktionen verfügt. Der maximale Wert für dieses Element ist 255.
SrbType
Typ der SRBs, die an den Miniporttreiber gesendet werden sollen. Verfügbar ab Windows 8. Dies ist auf einen der folgenden Werte festgelegt:
Wert | Bedeutung |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | Der Miniporttreiber empfängt Standard-SRBs. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | Der Miniporttreiber empfängt erweiterte SRBs. |
AddressType
Der zwischen Storport und dem Miniporttreiber verwendete Adresstyp. Verfügbar ab Windows 8. Dies kann auf den folgenden Wert festgelegt werden:
Wert | Bedeutung |
---|---|
STORAGE_ADDRESS_TYPE_BTL8 | 8-Bit-Adressierung für Bus, Ziel und LUN (BTL). |
ReservedUchars[2]
Reserviert für die Systemverwendung (vorab Windows 8).
SlotNumber
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
BusInterruptLevel2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
BusInterruptVector2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
InterruptMode2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
DmaChannel2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
DmaPort2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
DmaWidth2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
DmaSpeed2
Reserviert für die Verwendung durch Storport. Miniporttreiber dürfen dieses Element nicht ändern.
DeviceExtensionSize
Größe in Bytes, 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. 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.
Storport folgt nicht dem SCSIPort-Modell (das die Geräteerweiterung neu initialisiert, wenn der Adapter beendet wird und daher nachfolgende Aufrufe von HwScsiFindAdapter eine Geräteerweiterung auf Null erhalten). 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 wie zuletzt vom Miniporttreiber 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
Größe in Byte, die vom Miniporttreiber für den Speicher pro logische Einheit erforderlich ist, falls vorhanden, um Datenübertragungen zu verarbeiten, die größer als 64.000 sind. Storport initialisiert diesen Member mit dem Wert im selben Member der HW_INITIALIZATION_DATA-Struktur , die in der StorPortInitialize-Routine gesendet wurde.
Legen Sie diesen Member auf 0 fest, 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
Größe in Byte, die der Miniporttreiber für den Speicher pro Anforderung benötigt, falls vorhanden, um Datenübertragungen zu verarbeiten, die größer als 64.000 sind. Storport initialisiert diesen Member mit dem Wert im selben Member der HW_INITIALIZATION_DATA-Struktur , die in der StorPortInitialize-Routine gesendet wurde.
Legen Sie diesen Member fest, bevor Sie StorPortGetUncachedExtension aufrufen, um die Größe des Anforderungsspeichers basierend auf NumberOfPhysicalBreaks zu ändern. Legen Sie diesen Member auf 0 fest, 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 ScsiPortGetUncachedExtension verwendet werden.
Dma64BitAddresses
Wenn die Gerätehardware nur 32-Bit-Adressen unterstützt, muss Dma64BitAddresses auf 0 festgelegt werden. Wenn das Gerät 64-Bit-Adressen unterstützt, gibt dieses Feld an, ob der HBA auf Adressen zugreifen kann, die größer als 4 GB sind.
Storport-Adapter sind erforderlich, um DMA mit Busbreite zu unterstützen. Daher initialisiert Storport auf einem 64-Bit- oder PAE-Computer Dma64BitAddresses in SCSI_DMA64_SYSTEM_SUPPORTED, was angibt, dass der Adapter auf den gesamten Adressbereich zugreifen kann. Wenn Miniporttreiber diesen Wert erkennen, müssen sie einen der Werte in der folgenden Tabelle im selben Member zurückgeben, um dem Porttreiber mitzuteilen, dass der Miniporttreiber 64-Bit-DMA unterstützt. Wenn der Miniport dies nicht tut, kann dies die Leistung des Adapters erheblich beeinträchtigen.
Wert | Bedeutung |
---|---|
SCSI_DMA64_MINIPORT_SUPPORTED | Der Miniporttreiber unterstützt physische 64-Bit-Adressen für E/A-Übertragungen. |
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED | Der Miniporttreiber unterstützt die vollständige 64-Bit-Adressierung. Dies weist darauf hin, dass E/A-Anforderungen physische Adressen > von 4 GB aufweisen können. Die nicht zwischengespeicherten Erweiterung, SenseInfo und Srb-Erweiterung sind möglicherweise über 4 GB vorhanden. Zuordnungen sind auf eine Begrenzungsausrichtung von 4 GB beschränkt, um zu verhindern, dass sie eine 4-GB-Grenze überschreiten. |
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED | Der Miniporttreiber unterstützt die vollständige 64-Bit-Adressierung. Dies weist darauf hin, dass E/A-Anforderungen physische Adressen > von 4 GB aufweisen können. Die nicht zwischengespeicherten Erweiterung, SenseInfo und Srb-Erweiterung sind möglicherweise über 4 GB vorhanden. Für Zuordnungen ist keine Begrenzungsausrichtung erforderlich. |
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED | Der Miniporttreiber unterstützt die 64-Bit-Adressierung in einer einzelnen 4-GB-Region. Dies gibt an, dass E/A-Anforderungen, nicht zwischengespeicherte Erweiterung, SenseInfo und Srb-Erweiterung über physische Adressen > von 4 GB in einer einzelnen 4-GB-Region verfügen können. |
ResetTargetSupported
Veraltet. Verwenden Sie diesen Member nicht.
MaximumNumberOfLogicalUnits
Maximale Anzahl logischer Einheiten pro Ziel, die der HBA steuern kann. Standardmäßig ist der Wert dieses Members SCSI_MAXIMUM_LOGICAL_UNITS. Ein Miniporttreiber kann diesen Member auf einen niedrigeren Wert zurücksetzen, wenn der HBA über eingeschränktere Funktionen verfügt, oder auf einen höheren Wert, was angibt, dass der HBA über erweiterte Funktionen verfügt. Der Maximalwert für diesen Member ist SCSI_MAXIMUM_LUNS_PER_TARGET.
WmiDataProvider
Bei TRUE antwortet der Miniporttreiber auf WMI-Anforderungen (Windows Management Instrumentation). Storport initialisiert diesen Member auf TRUE , da seine Miniporttreiber WMI unterstützen müssen. Darüber hinaus wird erwartet, dass Miniporttreiber für Fibre Channel-Adapter die SAN Management HBA-API über WMI unterstützen, und Miniporttreiber für hostbasierte RAID-Adapter sind erforderlich, um die RAID-Verwaltungsschnittstelle zu unterstützen.
Miniport-Treiber dürfen diesen Wert nicht ändern.
SynchronizationModel
Das E/A-Synchronisierungsmodell, das vom Miniporttreiber unterstützt wird. Es sind folgende Werte möglich:
Wert | Bedeutung |
---|---|
StorSynchronizeFullDuplex | Der Miniport unterstützt den Vollduplexmodus. |
StorSynchronizeHalfDuplex | Der Miniport unterstützt den Halbduplexmodus. |
HwMSInterruptRoutine
Zeiger auf die HwMSInterruptRoutine-Routine des Miniporttreibers, die für jeden Miniporttreiber eines HBA erforderlich ist, der MSIs (Message Signaled Interrupts) generiert. Ein Miniporttreiber legt diesen Member auf NULL fest, wenn der HBA keine MSIs generiert.
InterruptSynchronizationMode
Ein INTERRUPT_SYNCHRONIZATION_MODE Wert, der den Interruptsynchronisierungsmodus angibt. Der Interruptsynchronisierungsmodus bestimmt, wie der Porttreiber signalisierte Interrupts synchronisiert.
DumpRegion
Eine MEMORY_REGION-Struktur , die einen Bereich mit physisch zusammenhängendem Arbeitsspeicher beschreibt, den Miniporttreiber während eines Absturzabbilds oder Ruhezustands verwenden können.
RequestedDumpBufferSize
Größe der nicht zwischengespeicherten Erweiterung in Byte, die während des Speicherabbilds/Ruhezustands zugeordnet werden soll.
VirtualDevice
Bei TRUE befindet sich hinter diesem Gerät keine echte Hardware (z. B. kein DMA-Objekt, Interrupt, E/A-Ports). Storport verhält sich in einigen Fällen anders, wenn es einen "virtuellen" Miniport anstelle eines Miniports unterstützt, der reale Hardware steuert.
DumpMode
Gibt die Verwendung des Miniports während des Speicherabbildmodus an. Sie kann einen der folgenden Werte haben.
Wert | Bedeutung |
---|---|
DUMP_MODE_CRASH | Der Miniport im Speicherabbildmodus wird für einen Absturzdump verwendet. |
DUMP_MODE_HIBER | Der Miniport im Speicherabbildmodus wird für einen Ruhezustand verwendet. |
DUMP_MODE_MARK_MEMORY | Der Miniport im Speicherabbildmodus wird zum Markieren des erforderlichen Arbeitsspeichers verwendet. |
DUMP_MODE_RESUME | Der Miniport im Speicherabbildmodus wird für einen Lebenslauf aus dem Ruhezustand verwendet. |
DmaAddressWidth
Die Breite der DMA-Adresse eines Adapters. Miniports müssen bei der Bereitstellung dieses Werts STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED in FeatureSupport angeben. Der angegebene Wert muss (0 <DmaAddressWidth<= 64) sein. Dieses Feld kann ab Windows 10 Version 2004 verwendet werden.
ExtendedFlags1
Ist für das System reserviert.
MaxNumberOfIO
Maximale Anzahl ausstehender E/A-Vorgänge, die vom HBA unterstützt werden. Der Standardwert ist von Storport auf 1000 festgelegt. Wenn der HBA 1000 ausstehende E/A-Vorgänge nicht unterstützt, sollte der Miniport diesen Wert an einen geeigneten kleineren Wert anpassen.
Wenn der HBA mehr als 1000 ausstehende E/A-Vorgänge unterstützen kann, kann der Miniport diesen Member auf einen beliebigen Wert erhöhen, der von der Adapterhardware unterstützt wird. Um mehr als 1000 ausstehende E/A-Vorgänge zuzulassen, muss der HBA eine der folgenden 64-Bit-DMA-Adressierungsmethoden unterstützen, die im Feld Dma64BitAddresses festgelegt sind:
- SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
- SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
- SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED
MaxIOsPerLun
Maximale Anzahl von E/A-Anforderungen, die für eine LUN unterstützt werden. Storport legt diesen Wert auf den Standardwert 255 fest. Wenn eine LUN 255 ausstehende E/A-Anforderungen nicht unterstützt, sollte der Miniport diesen Member an einen entsprechenden kleineren Wert anpassen. Dieser Member muss = MaxNumberOfIO sein<. Um MaxIOsPerLun> 255 zu unterstützen, muss das SrbType-Feld auf SRB_TYPE_STORAGE_REQUEST_BLOCK festgelegt werden. Verfügbar ab Windows 8.
InitialLunQueueDepth
Die anfängliche LUN-E/A-Warteschlangentiefe. Storport legt dies für physische Miniports auf den Standardwert 20 und für virtuelle Miniports auf 250 fest. Dieses Mitglied passt die anfängliche Warteschlangentiefe für alle LUNs auf dem Adapter an. Die Warteschlangentiefe für eine einzelne LUN wird durch Aufrufen von StorPortSetDeviceQueueDepth festgelegt. Dieser Member wird in der Regel auf denselben Wert wie MaxIOsPerLun festgelegt. Verfügbar ab Windows 8.
BusResetHoldTime
Die Zeitspanne in Mikrosekunden, um den Adapter anzuhalten, nachdem ein Zurücksetzen erkannt wurde. Legen Sie diesen Wert auf 0 fest, wenn nach dem Zurücksetzen des Busses keine Wartezeit erforderlich ist. Verfügbar ab Windows 8.
FeatureSupport
Storport-Features, die für den Adapter angefordert werden. Verfügbar ab Windows 8. Ein Miniporttreiber kann diesen Member auf eine bitweise Maske mit einem der folgenden Werte festlegen:
Wert | Bedeutung |
---|---|
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 | Der Miniporttreiber unterstützt Telemetriedaten von Speichergeräten. |
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 | Der Miniport fordert an, den Befehl STOP_UNIT während des Herunterfahrens des Systems zu empfangen. |
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 | Der Miniporttreiber möchte, dass UncachedExtension vom NUMA-Knoten des Adapters zugeordnet wird. |
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 | Der Miniporttreiber bevorzugt die DMA V3-Kernel-API für den Adapter. |
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 | Der Miniporttreiber unterstützt die Möglichkeit, einen hervorragenden Befehl über SRB_FUNCTION_ABORT_COMMAND abzubrechen. |
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 | Der Adapter unterstützt umfassendere Temperaturschwelleninformationen als in der SCSI-SPC4-Spezifikation definiert. |
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 | Der Miniporttreiber hat die DMA-Adressbreite in DmaAddressWidth für den Adapter angegeben. Dieser Wert kann ab Windows 10 Version 2004 verwendet werden. |
Hinweise
Der Storport-Treiber weist diese Struktur zu und initialisiert sie, stellt so viele HBA-spezifische Konfigurationsinformationen wie möglich bereit und übergibt die Struktur an die HwStorFindAdapter-Routine des Miniporttreibers. Storport unterstützt keine Nicht-PnP-Geräte, daher sucht HwStorFindAdapter nicht nach dem Adapter. Seine Prinzipalfunktion besteht darin, PORT_CONFIGURATION_INFORMATION zu initialisieren.
Anforderungen
Anforderung | Wert |
---|---|
Header | storport.h (include Srb.h, Storport.h, Strmini.h) |