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 , um SCSI_DMA64_SYSTEM_SUPPORTED anzugeben, dass der Adapter auf den vollständigen Adressbereich zugreifen kann. Wenn Miniporttreiber diesen Wert erkennen, müssen sie einen der Werte in der folgenden Tabelle im selben Element zurückgeben, um dem Porttreiber anzugeben, 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 bedeutet, dass E/A-Anforderungen möglicherweise physische Adressen > von 4 GB aufweisen. Die nicht zwischengespeicherte Erweiterung SenseInfo und die 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 bedeutet, dass E/A-Anforderungen möglicherweise physische Adressen > von 4 GB aufweisen. Die nicht zwischengespeicherte Erweiterung SenseInfo und die Srb-Erweiterung sind möglicherweise über 4 GB vorhanden. Zuordnungen müssen keine Begrenzungsausrichtung erfordern.
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 in einer einzelnen 4-GB-Region über physische Adressen > von 4 GB verfügen können.

ResetTargetSupported

Veraltet. Verwenden Sie dieses Element nicht.

MaximumNumberOfLogicalUnits

Die maximale Anzahl logischer Einheiten pro Ziel, die vom HBA gesteuert werden 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 größeren Wert, der angibt, dass der HBA über erweiterte Funktionen verfügt. Der Maximalwert für dieses Element ist SCSI_MAXIMUM_LUNS_PER_TARGET.

WmiDataProvider

Bei TRUE antwortet der Miniporttreiber auf WMI-Anforderungen (Windows-Verwaltungsinstrumentation). 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.

Miniporttreiber dürfen diesen Wert nicht ändern.

SynchronizationModel

Das E/A-Synchronisierungsmodell, das der Miniporttreiber unterstützt. 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 Nachrichtensignal-Interrupts (MSIs) generiert. Ein Miniporttreiber legt diesen Member auf NULL fest, wenn der HBA keine MSIs generiert.

InterruptSynchronizationMode

Ein INTERRUPT_SYNCHRONIZATION_MODE Wert, der den Unterbrechungssynchronisierungsmodus 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 in Bytes der nicht zwischengespeicherten Erweiterung, die für die Verwendung während des Dump-/Ruhezustands zugewiesen werden soll.

VirtualDevice

Bei TRUE befindet sich keine echte Hardware hinter diesem Gerät (z. B. kein DMA-Objekt, Interrupt, E/A-Ports). Storport verhält sich unter umständen anders, wenn es einen "virtuellen" Miniport anstelle eines Miniports unterstützt, der die reale Hardware steuert.

DumpMode

Gibt die Verwendung des Miniports während des Dumpmodus an. Sie kann einen der folgenden Werte aufweisen.

Wert Bedeutung
DUMP_MODE_CRASH Der Miniport im Dumpmodus wird für einen Absturzdump verwendet.
DUMP_MODE_HIBER Der Miniport im Dumpmodus wird für einen Ruhezustand verwendet.
DUMP_MODE_MARK_MEMORY Der Miniport im Dumpmodus wird zum Markieren des erforderlichen Arbeitsspeichers verwendet.
DUMP_MODE_RESUME Der Miniport im Dumpmodus wird für einen Lebenslauf aus dem Ruhezustand verwendet.

DmaAddressWidth

Die Breite der DMA-Adresse eines Adapters. Miniports müssen beim Bereitstellen dieses Werts in FeatureSupport STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 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 keine 1.000 ausstehenden E/A-Vorgänge unterstützt, sollte der Miniport dies an einen entsprechenden kleineren Wert anpassen.

Wenn der HBA mehr als 1.000 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 1.000 ausstehende E/A-Vorgänge zu ermöglichen, 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 dies 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 auf den Standardwert 20 für physische Miniports und auf 250 für virtuelle Miniports 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 zum Anhalten des Adapters, nachdem ein Zurücksetzen erkannt wurde. Legen Sie diesen Wert auf 0 fest, wenn nach einer Buszurücksetzung keine Wartezeit erforderlich ist. Verfügbar ab Windows 8.

FeatureSupport

Storport-Features, die für den Adapter angefordert wurden. Verfügbar ab Windows 8. Ein Miniporttreiber kann diesen Member als bitweise Maske mit einem der folgenden Werte festlegen:

Wert Bedeutung
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 Der Miniporttreiber unterstützt Die Telemetriedaten von Speichergeräten.
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 Der Miniport fordert an, den STOP_UNIT-Befehl 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 zugewiesen 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 ausstehenden 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 ordnet 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 Hauptfunktion besteht darin, PORT_CONFIGURATION_INFORMATION zu initialisieren.

Anforderungen

Anforderung Wert
Header storport.h (include Srb.h, Storport.h, Strmini.h)

Weitere Informationen

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth