Freigeben über


PORT_CONFIGURATION_INFORMATION Struktur (srb.h)

PORT_CONFIGURATION_INFORMATION (SCSI) enthält Konfigurationsinformationen für eine HBA. Der osspezifische Porttreiber weist diese Struktur zu und initialisiert diese Struktur, liefert so viele HBA-spezifische Konfigurationsinformationen wie möglich und übergibt die Struktur an die HwScsiFindAdapter Routine des Miniporttreibers. Der Porttreiber ruft einige der Informationen für diese Struktur aus der HW_INITIALIZATION_DATA Struktur des Miniporttreibers ab. Die HwScsiFindAdapter- Routine des Miniporttreibers ist dafür verantwortlich, zu bestimmen, ob der Miniporttreiber die HBA unterstützen kann, und falls ja, die relevanten verbleibenden Informationen in der PORT_CONFIGURATION_INFORMATION Struktur auszufüllen.

Anmerkung

Die SCSI-Porttreiber- und SCSI-Miniporttreibermodelle können in Zukunft geändert oder nicht verfügbar sein. Verwenden Sie stattdessen den Storport-Treiber und Storport Miniport Treibermodelle.

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           Reserved;
  UCHAR           NumberOfBuses;
  UCHAR           InitiatorBusId[8];
  BOOLEAN         ScatterGather;
  BOOLEAN         Master;
  BOOLEAN         CachesData;
  BOOLEAN         AdapterScansDown;
  BOOLEAN         AtdiskPrimaryClaimed;
  BOOLEAN         AtdiskSecondaryClaimed;
  BOOLEAN         Dma32BitAddresses;
  BOOLEAN         DemandMode;
  BOOLEAN         MapBuffers;
  BOOLEAN         NeedPhysicalAddresses;
  BOOLEAN         TaggedQueuing;
  BOOLEAN         AutoRequestSense;
  BOOLEAN         MultipleRequestPerLu;
  BOOLEAN         ReceiveEvent;
  BOOLEAN         RealModeInitialized;
  BOOLEAN         BufferAccessScsiPortControlled;
  UCHAR           MaximumNumberOfTargets;
  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;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Angehörige

Length

Gibt die Größe dieser Struktur in Byte an. In der Tat gibt dieses Element, das immer vom betriebssystemspezifischen Porttreiber initialisiert wird, die Version dieser Struktur an, die vom Porttreiber verwendet wird.

SystemIoBusNumber

Gibt die vom System zugewiesene Nummer des E/A-Busses an, mit dem die HBA verbunden ist. Der betriebssystemspezifische Porttreiber initialisiert dieses Element immer. Der Wert wird vom System zugewiesen, da die Plattform möglicherweise mehrere E/A-Busse des angegebenen AdapterInterfaceType-hat.

AdapterInterfaceType

Identifiziert die E/A-Busschnittstelle. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der vom Miniporttreiber in der HW_INITIALIZATION_DATA (SCSI) Struktur angegeben wird.

BusInterruptLevel

Gibt die Anforderungsebene des busrelativen Interrupts an. Der betriebssystemspezifische Porttreiber nimmt keine Annahmen über die Unterbrechungsnutzung des HBA vor, sodass der Standardwert null ist. Je nach AdapterInterfaceType und HBA kann der für dieses Element festgelegte Wert der IRQL für den Bus entsprechen, z. B. für Isa und MicroChannel Typbussen. Treiber von Eisa HBAs müssen diesen Wert auf den busrelativen IRQL für die HBA festlegen, wenn der Adapter für Level-Sensitive Interrupts konfiguriert ist.

BusInterruptVector

Gibt den vom HBA zurückgegebenen busrelativen Vektor an. Der betriebssystemspezifische Porttreiber nimmt keine Annahmen über die Unterbrechungsnutzung des HBA vor, sodass der Standardwert null ist. Dieses Mitglied ist für Treiber irrelevant, die das BusInterruptLevel Mitglied für ihre HBAs einrichten. Es ist für HBAs für Typen von E/A-Bussen relevant, die Interruptvektoren verwenden, z. B. PCIBus-.

InterruptMode

Gibt an, ob die HBA LevelSensitive oder Latched (manchmal auch als "edgetriggered" bezeichnet) interrupts verwendet. Der betriebssystemspezifische Porttreiber initialisiert dieses Element auf einen geeigneten Wert für den Bus und das Gerät, z. B. LevelSensitive- für PCIBus-. Treiber von Eisa HBAs müssen diesen Wert zurücksetzen, wenn der Adapter für levelsensitive Unterbrechungen konfiguriert ist, wie treiber von HBAs auf E/A-Bussen, die levelsensitive Interrupts verwenden, wie z. B. MicroChannel Typbusse.

MaximumTransferLength

Gibt die maximale Anzahl von Bytes an, die der HBA in einem einzelnen Übertragungsvorgang übertragen kann. Standardmäßig ist der Wert dieses Elements SP_UNINITIALIZED_VALUE, der eine unbegrenzte maximale Übertragungsgröße angibt. Wenn der HBA eine eingeschränktere Übertragungsunterstützung hat, muss ein Miniporttreiber dieses Mitglied entsprechend der Übertragungskapazität der HBA zurücksetzen. Wenn die HwScsiInterrupt-Routine eines Miniporttreibers keine Unterbrechungen auf der HBA deaktivieren kann, kann dieses Element während der Treiberentwicklung angepasst werden, um sicherzustellen, dass die für den ISR des Miniporttreibers aufgewendete Zeit nicht dazu führt, dass die Maus "springt" oder der serielle/parallele Durchsatz auf eine benutzerbemerkte Ebene fällt.

NumberOfPhysicalBreaks

Gibt die maximale Anzahl von Umbrüchen zwischen Adressbereichen an, die ein Datenpuffer aufweisen kann, wenn der HBA XY/Gather unterstützt. Mit anderen Worten, die Anzahl der Punkt-/Sammellisten minus eins. Standardmäßig ist der Wert dieses Elements SP_UNINITIALIZED_VALUE, was angibt, dass die HBA eine unbegrenzte Anzahl von physischen Brüchen unterstützen kann. Wenn der Porttreiber einen Wert für dieses Element festlegt, kann der Miniporttreiber den Wert niedriger, aber nicht höher anpassen. Wenn dieses Element SP_UNINITIALIZED_VALUE ist, muss der Miniporttreiber dieses Element gemäß der X/Gather-Kapazität der HBA zurücksetzen, wobei null keine XY/Gather-Unterstützung darstellt.

DmaChannel

Gibt den DMA-Kanal an, der von einem untergeordneten HBA verwendet wird. Standardmäßig ist der Wert dieses Elements SP_UNINITIALIZED_VALUE. Wenn die HBA einen System-DMA-Controller verwendet und der angegebene AdapterInterfaceType- ein beliebiger Wert ist, außer MicroChannel-, muss der Miniporttreiber dieses Element zurücksetzen.

DmaPort

Gibt den DMA-Port an, der von einem untergeordneten HBA verwendet wird. Standardmäßig ist der Wert dieses Elements SP_UNINITIALIZED_VALUE. Wenn die HBA einen System-DMA-Controller verwendet und der angegebene AdapterInterfaceType-MicroChannelist, muss der Miniporttreiber dieses Element festlegen.

DmaWidth

Gibt die Breite von DMA-Übertragungen an, wenn die HBA DMA verwendet. Standardmäßig ist der Wert dieses Elements Null. Wenn die HBA DMA ausführt, muss der Miniporttreiber dieses Element auf einen der folgenden Elemente zurücksetzen: Width8Bits, Width16Bitsoder Width32Bits.

DmaSpeed

Gibt die DMA-Datenübertragungsgeschwindigkeit für Eisa HBAs an. Standardmäßig gibt der Wert dieses Elements die Kompatibilitätszeitdauer an. Zulässige Werte für dieses Element sind eine der folgenden: kompatible, TypeA-, TypeB-oder TypeC-.

AlignmentMask

Enthält eine Maske, die die Ausrichtungseinschränkungen für Puffer angibt, die vom HBA für Übertragungsvorgänge erforderlich sind. Gültige Maskenwerte sind auch durch Merkmale der Speichermanager in verschiedenen Versionen von Windows eingeschränkt. Die unter Windows 95 oder Windows 98 zulässigen Maskenwerte sind 0 (Byte ausgerichtet), 1 (Wort ausgerichtet) oder 3 (DWORD ausgerichtet). Unter Windows NT und Windows 2000 sind die gültigen Maskenwerte 0 (byte aligned), 1 (word aligned), 3 (DWORD aligned) und 7 (double DWORD aligned). Der Miniporttreiber sollte diese Maske festlegen, wenn die HBA Punkt/Erfassung unterstützt.

NumberOfAccessRanges

Gibt die Anzahl der AccessRanges- Elemente im Array an, die als Nächstes beschrieben werden. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird.

AccessRanges

Reserved

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

NumberOfBuses

Gibt die Anzahl der vom HBA gesteuerten SCSI-Busse an. Standardmäßig ist der Wert dieses Elements Null.

InitiatorBusId[8]

Gibt die Initiatorbus-ID an. Wenn die Eingabe InitiatorBusId[0] den Wert Null hat, kann der Miniporttreiber einen Standardwert zuweisen, wenn die HBA nicht die Verwendung bestimmter Werte erfordert, die durch Abfragen der HBA bestimmt werden. Andernfalls sollte der Miniporttreiber ggf. einen wert ungleich null verwenden, der vom Porttreiber zugewiesen wird. Jeder Miniporttreiber muss InitiatorBusId Spezifikationen aktualisieren, um mit der HBA übereinzustimmen, falls erforderlich, die HBA abzufragen, um die entsprechenden Werte zu ermitteln.

Ein Miniporttreiber muss einen Eintrag für jeden vom HBA unterstützten SCSI-Bus festlegen, wie durch den Wert von NumberOfBusesangegeben.

ScatterGather

Gibt an, wann TRUE-, die von der HBA XY/Gather unterstützt werden. Wenn FALSE unterstützt der HBA keine Punkt/Erfassung. Standardmäßig ist der Wert dieses Elements FALSE.

Master

Gibt an, wann TRUE, dass die HBA ein Busmaster ist. Wenn FALSE, ist die HBA kein Busmaster. Standardmäßig ist der Wert dieses Elements FALSE.

CachesData

Gibt an, wann TRUE-, dass die HBA Daten zwischenspeichert oder den Cachestatus auf den Peripheriegeräten verwaltet. Wenn FALSE speichert die HBA keine Daten oder verwaltet den Zwischenspeicherstatus der Peripheriegeräte. Standardmäßig ist der Wert dieses Elements FALSE. Wenn dies auf TRUEzurückgesetzt wird, benachrichtigt der osspezifische Porttreiber den Miniporttreiber, wenn bestimmte Systemereignisse auftreten, z. B. Dateisystemcache-Leerungen und Systemstillstand. Wenn beispielsweise ein Controller auf dem Bus zwei Datenträger spiegelt, würde der Miniporttreiber dieses Element normalerweise auf TRUEfestlegen.

AdapterScansDown

Gibt an, wann TRUE, dass das BIOS für die HBA nach SCSI-Buszielen von sieben bis null sucht. Wenn FALSE-, sucht das BIOS für die HBA nach SCSI-Buszielen, beginnend mit einer ID Null und scannt nach oben (aber nicht einschließlich) MaximumTargetIds. Standardmäßig ist der Wert AdapterScansDown-FALSE.

AtdiskPrimaryClaimed

Gibt an, wann TRUE, dass der primäre "AT"-Adressbereich (WD1003-kompatible) Datenträgeradresse, 0x1F0 zu 0x1FF, in der Registrierung von einem anderen Treiber für sein Gerät beansprucht wurde. Der betriebssystemspezifische Porttreiber initialisiert dieses Element immer. Wenn der Eingabewert dieses Elements TRUEist, sollte ein Miniporttreiber davon ausgehen, dass ein bereits geladener Treiber den Gerätebereich beansprucht hat. Wenn der Eingabewert FALSEist, kann ein Miniporttreiber den Adressbereich für einen HBA beanspruchen, der einen "AT"-Datenträgercontroller emuliert und dieses Element auf TRUE-zurücksetzen und dadurch den Zugriff auf diesen Bereich durch den "AT"-Datenträgertreiber oder anschließend geladene Miniporttreiber verhindert.

AtdiskSecondaryClaimed

Gibt an, wann TRUE, dass der sekundäre AT-Datenträgeradressenbereich 0x170 0x17F in der Registrierung von einem anderen Treiber für sein Gerät beansprucht wurde. Wenn FALSE der sekundäre AT-Datenträgeradressbereich nicht von einem anderen Treiber in der Registrierung beansprucht wurde. Der betriebssystemspezifische Porttreiber initialisiert dieses Element immer. Miniport-Treiber sollten dieses Mitglied wie für AtdiskPrimaryClaimedbehandeln.

Dma32BitAddresses

Gibt an, wann TRUE, dass die HBA über 32 Adresszeilen verfügt und auf den Arbeitsspeicher mit physischen Adressen zugreifen kann, die größer als 0x00FFFFFF sind. Wenn FALSE hat die HBA entweder eine Reihe anderer DMA-Adresszeilen als 32. Standardmäßig ist der Wert dieses Elements FALSE. Wenn der Miniporttreiber Dma64BitAddressesfestlegt, muss dieses Element FALSE-sein.

DemandMode

Gibt an, wann TRUE, dass der DMA-Systemcontroller für den Bedarfsmodus und nicht für Einzelzyklusvorgänge programmiert werden soll. Wenn die HBA kein untergeordnetes Gerät ist, sollte dieses Element FALSE-sein.

MapBuffers

Gibt an, wann TRUE, dass Datenpuffer den virtuellen Adressbereichen des Systems zugeordnet werden müssen. Wenn FALSE müssen die Datenpuffer nicht den virtuellen Systemadressen zugeordnet werden. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert. Wenn FALSE-, darf der Miniporttreiber nicht direkt auf Srb.DataBuffer zugreifen.

NeedPhysicalAddresses

Gibt an, wann TRUE, dass der Miniporttreiber virtuelle Adressen in physische Adressen übersetzen muss, wie dies von der HBA erforderlich ist. Wenn FALSE-, muss der Miniporttreiber keine virtuellen Adressen in physische Adressen übersetzen. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert.

TaggedQueuing

Gibt an, wann TRUE, dass die HBA das Queuing mehrerer Anforderungen mit SCSI-Tags unterstützt. Wenn FALSE-, unterstützt die HBA keine SCSI-markierte Warteschlange. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert.

AutoRequestSense

Gibt an, wann TRUE, dass die HBA die automatische Anforderungsoptimierung unterstützt. Wenn FALSE unterstützt die HBA keine automatische Anforderungsoptimierung. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert. Dieses Mitglied muss auf TRUE- festgelegt werden, bevor der Treiber eines HBA-Busmasters ScsiPortGetUncachedExtensionaufruft.

MultipleRequestPerLu

Gibt an, wann TRUE-, dass die HBA mehrere Anforderungen pro logische Einheit unterstützt. Wenn FALSE unterstützt die HBA nicht mehrere Anforderungen pro logische Einheit. Der Mechanismus, mit dem der Adapter die Anforderungen zwischenspeichert, ist adapterdefiniert. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert.

ReceiveEvent

Gibt an, wann TRUE, dass die HBA SCSI-Empfangsereignisvorgänge unterstützt. Wenn FALSE unterstützt der HBA keine SCSI-Empfangsereignisvorgänge. Der betriebssystemspezifische Porttreiber legt dieses Element immer auf den Wert fest, der in der HW_INITIALIZATION_DATA (SCSI) Struktur übergeben wird, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wird. Ein Miniporttreiber kann diesen Wert für jede bestimmte HBA zurücksetzen, die er steuert.

RealModeInitialized

Gibt an, wann TRUE-, dass ein Realmodustreiber (nur x86) den HBA bereits initialisiert hat. Wenn FALSE wurde die HBA zuvor nicht von einem Realmodustreiber initialisiert. Der vom Betriebssystem abhängige Porttreiber initialisiert dieses Element immer. Wenn dies auf TRUEfestgelegt ist, darf der Miniporttreiber seine HBA nicht initialisieren, wenn die Initialisierungssequenz des Treibers mit der HBA-Initialisierung im Realmodus identisch ist; Die HBA wird unter diesen Umständen nicht erneut initialisiert, wodurch der Miniporttreiber viel schneller geladen wird. Der Wert dieses Elements ist für jeden Miniporttreiber irrelevant, der seine HBA immer initialisiert, während er im geschützten Modus auf x86-basierten Plattformen ausgeführt wird, und für alle Miniporttreiber, für die es unwichtig ist, ob sie auf einer CISC- oder RISC-basierten Plattform ausgeführt werden.

BufferAccessScsiPortControlled

Gibt an, wann TRUE, dass der Miniporttreiber immer ScsiPortXxx- aufruft, um auf Datenpuffer und/oder Anforderungsoptimierungsinformationen in SRBs zuzugreifen, wodurch der betriebssystemspezifische Porttreiber die Verarbeitung von E/A-Anforderungen optimieren kann. Wenn FALSE muss der Miniporttreiber nicht ScsiPort-Xxx- Routinen aufrufen, um auf Datenpuffer oder Anforderungsoptimierungsinformationen zuzugreifen. Wenn Sie dieses Element auf FALSE festlegen, kann die E/A-Leistung der HBA beeinträchtigen. Aufrufroutinen außer dem ScsiPortXxx machen einen Miniporttreiber für microsoft-Betriebssysteme nicht portierbar.

MaximumNumberOfTargets

Gibt die Anzahl der Zielperipheriegeräte an, die die HBA steuern kann. Standardmäßig ist der Wert dieses Elements gemäß dem SCSI-Standard SCSI_MAXIMUM_TARGETS. Ein Miniporttreiber kann dieses Element auf einen geringeren Wert zurücksetzen, wenn die HBA über eingeschränkte Funktionen oder auf einen höheren Wert verfügt, der angibt, dass die HBA über breite SCSI- oder Fibre Channel-Funktionen verfügt. Dieser Wert ist auf SCSI_MAXIMUM_TARGETS_PER_BUS beschränkt.

ReservedUchars[2]

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

SlotNumber

Gibt die Steckplatznummer einer HBA mit übereinstimmenden Werten an die VendorId- und DeviceId- an, die in der HW_INITIALIZATION_DATA (SCSI) Struktur angegeben wurden, wenn der Miniporttreiber ScsiPortInitializeaufgerufen wurde.

BusInterruptLevel2

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

BusInterruptVector2

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

InterruptMode2

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

DmaChannel2

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

DmaPort2

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

DmaWidth2

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

DmaSpeed2

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

DeviceExtensionSize

Gibt die Größe in Bytes an, die von einem Miniporttreiber für die Geräteerweiterung pro HBA erforderlich sind, um Datenübertragungen zu verarbeiten, die größer als 64 KB sind, was möglicherweise größere Punkt-/Sammellisten als die in der Registrierung für diesen Treiber definierte Größe erfordert.

SpecificLuExtensionSize

Gibt die Größe in Byte an, die vom Miniporttreiber für den Speicher pro Logische Einheit benötigt werden, falls vorhanden, um Datenübertragungen zu verarbeiten, die größer als 64 KB sind. 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 ScsiPortGetUncachedExtensionverwendet werden.

SrbExtensionSize

Gibt die Größe in Byte an, die der Miniporttreiber für den Speicher pro Anforderung benötigt, falls vorhanden, um Datenübertragungen zu verarbeiten, die größer als 64 KB sind. Legen Sie diesen Member fest, bevor Sie ScsiPortGetUncachedExtension- aufrufen, um die Größe des Speichers pro Anforderung basierend auf NumberOfPhysicalBreakszu ändern. 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 an diesem Wert entsprechende Anpassungen vorgenommen werden, bevor sie mit Routinen wie ScsiPortGetUncachedExtensionverwendet werden.

Dma64BitAddresses

Gibt an, dass die HBA auf Adressen mit mehr als 4 GB zugreifen kann, oder 0x0FFFFFFFF, wenn Dma64BitAddresses einen Wert von SCSI_DMA64_MINIPORT_SUPPORTED enthält. Vor Windows 2000 legt der ScsiPort diesen Wert basierend auf dem Inhalt HW_INITIALIZATION_DATA (SCSI)fest. Dies ist nicht mehr der Fall. In Windows 2000 wird der Wert von Dma64BitAddresses allein durch den Miniporttreiberrückruf HwScsiFindAdapter bestimmt. Wenn das Betriebssystem einen 64-Bit-Adressraum unterstützt, übergibt der Porttreiber einen Wert von SCSI_DMA64_SYSTEM_SUPPORTED an den Miniporttreiber in diesem Element. Wenn die von PORT_CONFIGURATION_INFORMATION beschriebene HBA auch Adressräume unterstützt, die größer als 32-Bit sind, ist der Port-/Miniporttreiber erforderlich, um die vollständige 64-Bit-Adressierung zu unterstützen, und der Rückruf des Miniporttreibers HwScsiFindAdapter gibt dies an, indem ein Wert von SCSI_DMA64_MINIPORT_SUPPORTED Dma64BitAddresseszugewiesen wird, wobei über alle vorherigen Vom Porttreiber zugewiesenen Werte geschrieben wird. Der richtige Wert muss dem Dma64BitAddresses Member zugewiesen werden, bevor der Miniporttreiber ScsiPortGetUncachedExtension-aufruft.

ResetTargetSupported

Obsolet. Der ScsiPort-Treiber sendet nicht mehr SRB_FUNCTION_RESET_DEVICE Anforderungen an seine Miniporttreiber. Verwenden Sie dieses Mitglied nicht.

MaximumNumberOfLogicalUnits

Gibt die maximale Anzahl logischer Einheiten pro Ziel an, die die HBA steuern kann. Standardmäßig ist der Wert dieses Elements SCSI_MAXIMUM_LOGICAL_UNITS. Ein Miniporttreiber kann dieses Element auf einen geringeren Wert zurücksetzen, wenn die HBA über eingeschränkte Funktionen oder auf einen höheren Wert verfügt, der angibt, dass die HBA über SCSI-3-Funktionen verfügt.

WmiDataProvider

Gibt an, wann TRUE, dass der Miniporttreiber auf WMI-Anforderungen (Windows Management Instrumentation) antwortet. Wenn FALSE reagiert der Miniporttreiber nicht auf WMI-Anforderungen (Windows Management Instrumentation). Standardmäßig ist der Wert dieses Elements FALSE.

Bemerkungen

Die initialisierten Elemente hängen vom HBA-Miniporttreiber und von den Konfigurationsinformationen ab, die für den betriebssystemspezifischen Porttreiber verfügbar sind. Der betriebssystemspezifische Porttreiber legt Standardwerte in allen Membern fest, für die keine Konfigurationsinformationen an die HwScsiFindAdapter Routine des Miniporttreibers bereitgestellt werden können.

Alle HBA-Miniporttreiber sollten mindestens einen Satz von Standardwerten aufweisen, der für relevante Member verwendet werden soll, wenn der betriebssystemspezifische Porttreiber nicht alle initialisierten Werte übergibt.

Die HwScsiFindAdapter- Routine muss alle Elemente aktualisieren, die für eine vom Treiber unterstützte HBA relevant sind.

Windows NT-Speicherklassentreiber, die später als Miniporttreiber geladen werden, hängen von den Informationen ab, die von den HwScsiFindAdapter Routine jedes Miniporttreibers bereitgestellt werden, um die nachfolgenden E/A-Anforderungen einzurichten. Beispielsweise MaximumTransferLength und NumberOfPhysicalBreaks Werte, die von jedem Miniporttreiber angegeben werden, ob ein Klassentreiber große Übertragungsanforderungen in eine Reihe von Teilübertragungen aufteilen muss, um den Grenzen der HBA zu entsprechen.

Das Dma64BitAddresses- Mitglied von PORT_CONFIGURATION_INFORMATION sollte nicht mehr als BOOLESCHER Wert betrachtet werden. Ein Wert von SCSI_DMA64_SYSTEM_SUPPORTED gibt an, dass der Port/Miniport-Treiber erforderlich ist, um die 64-Bit-Adressierung zu unterstützen. Die ScsiPortGetUncachedExtension Routine interpretiert jedoch weiterhin jeden Wert ungleich Null von Dma64BitAddresses, da die 64-Bit-Unterstützung erforderlich ist. Dies bedeutet, dass ScsiPortGetUncachedExtension weiterhin ordnungsgemäß funktioniert, wenn von einem Legacytreiber aufgerufen wird, der BOOLEN-Werte Dma64BitAddresseszuweist.

Zusätzlich zu Dma64BitAddressesverfügen sowohl PORT_CONFIGURATION_INFORMATION als auch HW_INITIALIZATION_DATA über ein Elementpaar namens SpecificLuExtensionSize und SrbExtensionSize, dessen Werte jetzt unterschiedlich behandelt werden müssen. Der Miniporttreiber muss die Anfangswerte von SpecificLuExtensionSize und SrbExtensionSize in HW_INITIALIZATION_DATA basierend auf der Annahme berechnen, dass die HBA 32-Bit-Adressen empfangen kann, unabhängig davon, was der Controller tatsächlich unterstützen kann. Die Standardwerte für SpecificLuExtensionSize und SrbExtensionSize- in PORT_CONFIGURATION_INFORMATION basieren ebenfalls auf einer Annahme der 32-Bit-Adressierung, da die Werte in PORT_CONFIGURATION_INFORMATION von den Werten in HW_INITIALIZATION_DATA abgeleitet werden.

Dies bedeutet: Wenn der Miniporttreiber zusätzlichen Speicherplatz in der LUN-Erweiterung oder der SRB-Erweiterung benötigt, um 64-Bit-physische Adressen zu verarbeiten, muss er die Werte für SpecificLuExtensionSize und SrbExtensionSize in PORT_CONFIGURATION_INFORMATION ändern, um dies zu berücksichtigen, bevor PORT_CONFIGURATION_INFORMATION an ScsiPortGetUncachedExtensionübergeben.

Anforderungen

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

Siehe auch

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)-

HwScsiFindAdapter-

ScsiPortGetDeviceBase-

ScsiPortGetUncachedExtension-

ScsiPortInitialize-

ScsiPortValidateRange