struttura PORT_CONFIGURATION_INFORMATION (srb.h)

PORT_CONFIGURATION_INFORMATION (SCSI) contiene informazioni di configurazione per un hba. Il driver di porta specifico del sistema operativo alloca e inizializza questa struttura, fornisce il maggior numero possibile di informazioni di configurazione specifiche di HBA e passa la struttura alla routine HwScsiFindAdapter del driver miniport. Il driver di porta ottiene alcune delle informazioni per questa struttura dalla struttura HW_INITIALIZATION_DATA del driver miniport. La routine HwScsiFindAdapter del driver miniport è responsabile della determinazione se il driver miniport può supportare l'HBA e, in tal caso, per inserire le informazioni rimanenti pertinenti nella struttura PORT_CONFIGURATION_INFORMATION.

Nota

I modelli di driver di porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. Usare invece i modelli di driver driver Storport e miniport Storport.

Sintassi

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;

Members

Length

Specifica le dimensioni di questa struttura in byte. In effetti, questo membro, che viene sempre inizializzato dal driver di porta specifico del sistema operativo, indica la versione di questa struttura usata dal driver della porta.

SystemIoBusNumber

Specifica il numero assegnato dal sistema del bus di I/O a cui è connesso l'HBA. Il driver di porta specifico del sistema operativo inizializza sempre questo membro. Il valore è assegnato dal sistema perché la piattaforma potrebbe avere diversi bus di I/O del valore AdapterInterfaceType specificato.

AdapterInterfaceType

Identifica l'interfaccia del bus di I/O. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore specificato dal driver miniport nella struttura HW_INITIALIZATION_DATA (SCSI).

BusInterruptLevel

Specifica il livello di richiesta di interrupt relativo al bus. Il driver di porta specifico del sistema operativo non presuppone l'utilizzo degli interrupt dell'HBA, quindi il valore predefinito è zero. A seconda del valore AdapterInterfaceType e HBA specificato, il valore impostato per questo membro può corrispondere a IRQL per il bus, ad esempio per i bus di tipo Isa e MicroChannel . I driver di Eisa HBA devono impostare questo valore sul irQL relativo al bus per l'HBA se la scheda è configurata per gli interrupt sensibili al livello.

BusInterruptVector

Specifica il vettore relativo al bus restituito dall'HBA. Il driver di porta specifico del sistema operativo non presuppone l'utilizzo degli interrupt dell'HBA, quindi il valore predefinito è zero. Questo membro è irrilevante per i driver che configurano il membro BusInterruptLevel per le loro HBA. È pertinente per gli HBA sui tipi di bus di I/O che usano vettori di interruzione, ad esempio PCIBus.

InterruptMode

Specifica se l'HBA utilizza interruzioni LevelSensitive o Latched (talvolta denominate "attivate da edge"). Il driver di porta specifico del sistema operativo inizializza questo membro in un valore appropriato per il bus e il dispositivo, ad esempio LevelSensitive per PCIBus. I driver di Eisa HBA devono reimpostare questo valore se l'adattatore è configurato per le interruzioni sensibili al livello, in quanto devono essere driver di HBA nei bus di I/O che usano interrupt sensibili al livello, ad esempio bus di tipo MicroChannel .

MaximumTransferLength

Specifica il numero massimo di byte che l'HBA può trasferire in una singola operazione di trasferimento. Per impostazione predefinita, il valore di questo membro è SP_UNINITIALIZED_VALUE, che indica una dimensione massima di trasferimento illimitata. Se l'HBA ha un supporto di trasferimento più limitato, un driver miniport deve reimpostare questo membro in base alla capacità di trasferimento dell'HBA. Se la routine HwScsiInterrupt di un driver miniport non può disabilitare gli interrupt nell'HBA, questo membro può essere modificato durante lo sviluppo del driver per garantire che il tempo impiegato nell'ISR del driver miniport non causi il passaggio del mouse o la velocità effettiva seriale/parallela a un livello evidente dall'utente.

NumberOfPhysicalBreaks

Specifica il numero massimo di interruzioni tra intervalli di indirizzi che un buffer di dati può avere se l'HBA supporta la raccolta/dispersione. In altre parole, il numero di elenchi a dispersione/raccolta meno uno. Per impostazione predefinita, il valore di questo membro è SP_UNINITIALIZED_VALUE, che indica che l'HBA può supportare un numero illimitato di discontità fisiche. Se il driver della porta imposta un valore per questo membro, il driver miniport può modificare il valore inferiore ma non superiore. Se questo membro è SP_UNINITIALIZED_VALUE, il driver miniport deve reimpostare questo membro in base alla capacità di dispersione/raccolta dell'HBA, con zero che rappresenta nessun supporto a dispersione/raccolta.

DmaChannel

Specifica il canale DMA utilizzato da un HBA subordinato. Per impostazione predefinita, il valore di questo membro è SP_UNINITIALIZED_VALUE. Se l'HBA usa un controller DMA di sistema e il valore AdapterInterfaceType specificato è qualsiasi valore tranne MicroChannel, il driver miniport deve reimpostare questo membro.

DmaPort

Specifica la porta DMA utilizzata da un HBA subordinato. Per impostazione predefinita, il valore di questo membro è SP_UNINITIALIZED_VALUE. Se l'HBA usa un controller DMA di sistema e l'adapterInterfaceType specificato è MicroChannel, il driver miniport deve impostare questo membro.

DmaWidth

Specifica la larghezza dei trasferimenti DMA se l'HBA utilizza DMA. Per impostazione predefinita, il valore di questo membro è zero. Se l'HBA esegue DMA, il driver miniport deve reimpostare questo membro su uno dei seguenti elementi: Width8Bits, Width16Bits o Width32Bits.

DmaSpeed

Specifica la velocità di trasferimento dei dati DMA per le HBA Eisa . Per impostazione predefinita, il valore di questo membro specifica la tempistica di compatibilità. I valori accettabili per questo membro sono i seguenti: Compatible, TypeA, TypeB o TypeC.

AlignmentMask

Contiene una maschera che indica le restrizioni di allineamento per i buffer richiesti dall'HBA per le operazioni di trasferimento. I valori di maschera validi sono limitati anche dalle caratteristiche delle gestioni memoria in versioni diverse di Windows. I valori della maschera consentiti in Windows 95 o Windows 98 sono 0 (allineati a byte), 1 (allineati a parole) o 3 (allineati DWORD). In Windows NT e Windows 2000 i valori validi della maschera sono 0 (allineati a byte), 1 (allineato a parole), 3 (allineato DWORD) e 7 (doppia DWORD allineato). Il driver miniport deve impostare questa maschera se l'HBA supporta la raccolta/dispersione.

NumberOfAccessRanges

Specifica il numero di elementi AccessRanges nella matrice, descritti di seguito. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA quando il driver miniport denominato ScsiPortInitialize.

AccessRanges

Reserved

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

NumberOfBuses

Specifica il numero di bus SCSI controllati dall'HBA. Per impostazione predefinita, il valore di questo membro è zero.

InitiatorBusId[8]

Indica l'ID bus dell'iniziatore. Se l'input InitiatorBusId[0] ha il valore zero, il driver miniport può assegnare un valore predefinito se l'HBA non richiede l'uso di valori specifici determinati eseguendo una query sull'HBA. In caso contrario, il driver miniport deve usare qualsiasi valore diverso da zero assegnato dal driver della porta, se possibile. Ogni driver miniport deve aggiornare le specifiche InitiatorBusId in modo che corrispondano a ciò che viene usato dall'HBA, se necessario per eseguire una query sull'HBA per determinare i valori appropriati.

Un driver miniport deve impostare una voce per ogni bus SCSI supportato dall'HBA, come indicato dal valore di NumberOfBuses.

ScatterGather

Indica quando TRUE che HBA supporta la raccolta/dispersione. Se FALSE , l'HBA non supporta la raccolta/dispersione. Per impostazione predefinita, il valore di questo membro è FALSE.

Master

Indica quando TRUE indica che l'HBA è un master del bus. Se FALSE, l'HBA non è un master del bus. Per impostazione predefinita, il valore di questo membro è FALSE.

CachesData

Indica quando TRUE che l'HBA memorizza nella cache i dati o mantiene lo stato memorizzato nella cache nelle periferiche. Se FALSE l'HBA non memorizza nella cache i dati o mantiene lo stato memorizzato nella cache nelle periferiche. Per impostazione predefinita, il valore di questo membro è FALSE. Se viene reimpostato su TRUE, il driver di porta specifico del sistema operativo notifica al driver miniport quando si verificano determinati eventi di sistema, ad esempio gli scaricamenti della cache del file system e l'arresto del sistema. Ad esempio, se un controller sul bus rispecchia due dischi, il driver miniport imposta normalmente questo membro su TRUE.

AdapterScansDown

Indica quando true il BIOS per l'HBA cerca le destinazioni del bus SCSI da sette a zero. Se FALSE, il BIOS per l'HBA cerca le destinazioni del bus SCSI, a partire da un ID zero e l'analisi verso l'alto fino a (ma non include) MaximumTargetIds. Per impostazione predefinita, il valore di AdapterScansDown è FALSE.

AtdiskPrimaryClaimed

Indica quando TRUE l'intervallo di indirizzi del disco primario "AT" (compatibile con WD1003), 0x1F0 a 0x1FF, è stato richiesto nel Registro di sistema da un altro driver per il dispositivo. Il driver di porta specifico del sistema operativo inizializza sempre questo membro. Se il valore di input di questo membro è TRUE, un driver miniport deve presupporre che un driver già caricato abbia richiesto l'intervallo di dispositivi. Se il valore di input è FALSE, un driver miniport può richiedere l'intervallo di indirizzi per un HBA che emula un controller disco "AT" e reimpostare questo membro su TRUE, impedendo così l'accesso a questo intervallo dal driver del disco "AT" o successivamente caricando i driver miniport.

AtdiskSecondaryClaimed

Indica quando TRUE l'intervallo di indirizzi del disco AT secondario, 0x170 a 0x17F è stato richiesto nel Registro di sistema da un altro driver per il dispositivo. Se FALSE l'intervallo di indirizzi del disco AT secondario non è stato richiesto nel Registro di sistema da un altro driver. Il driver di porta specifico del sistema operativo inizializza sempre questo membro. I driver Miniport devono considerare questo membro come per AtdiskPrimaryClaimed.

Dma32BitAddresses

Indica quando TRUE che l'HBA ha 32 righe di indirizzi e può accedere alla memoria con indirizzi fisici maggiori di 0x00FFFFFF. Se FALSE l'HBA ha una serie di righe di indirizzi DMA diverse da 32. Per impostazione predefinita, il valore di questo membro è FALSE. Se il driver miniport imposta Dma64BitAddresses, questo membro deve essere FALSE.

DemandMode

Indica quando TRUE il controller DMA di sistema deve essere programmato per la modalità richiesta anziché per le operazioni a ciclo singolo. Se l'HBA non è un dispositivo subordinato, questo membro deve essere FALSE.

MapBuffers

Indica quando TRUE è necessario eseguire il mapping dei buffer di dati agli intervalli di indirizzi virtuali di sistema. Se FALSE , non è necessario eseguire il mapping dei buffer di dati agli indirizzi virtuali di sistema. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla. Se FALSE, il driver miniport non deve accedere direttamente a Srb.DataBuffer .

NeedPhysicalAddresses

Indica quando TRUE che il driver miniport deve convertire gli indirizzi virtuali in indirizzi fisici, come richiesto dall'HBA. Se FALSE, il driver miniport non deve convertire gli indirizzi virtuali in indirizzi fisici. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla.

TaggedQueuing

Indica quando TRUE che HBA supporta l'accodamento di più richieste con tag SCSI. Se FALSE, l'HBA non supporta l'accodamento con tag SCSI. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla.

AutoRequestSense

Indica quando TRUE che HBA supporta il rilevamento automatico della richiesta. Se FALSE l'HBA non supporta il senso della richiesta automatica. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla. Questo membro deve essere impostato su TRUE prima che il driver di un hbA master del bus chiami ScsiPortGetUncachedExtension.

MultipleRequestPerLu

Indica quando TRUE che l'HBA supporta più richieste per unità logica. Se FALSE l'HBA non supporta più richieste per unità logica. Il meccanismo in base al quale l'adattatore memorizza nella cache le richieste è definito dall'adattatore. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla.

ReceiveEvent

Indica quando TRUE che l'HBA supporta le operazioni di ricezione-evento SCSI. Se FALSE l'HBA non supporta le operazioni di ricezione-evento SCSI. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize. Un driver miniport può reimpostare questo valore per qualsiasi particolare HBA che controlla.

RealModeInitialized

Indica quando true che un driver in modalità reale (solo x86) ha già inizializzato l'HBA. Se FALSE l'HBA non è stato inizializzato in precedenza da un driver in modalità reale. Il driver di porta dipendente dal sistema operativo inizializza sempre questo membro. Se è impostato su TRUE, il driver miniport non deve inizializzare l'HBA se la sequenza di inizializzazione del driver è identica all'inizializzazione HBA in modalità reale; non reinizializzare l'HBA in queste circostanze rende il carico del driver miniport molto più veloce. Il valore di questo membro è irrilevante per qualsiasi driver miniport che inizializza sempre la propria HBA durante l'esecuzione in modalità protetta su piattaforme basate su x86 e per tutti i driver miniport per i quali è irrilevante se sono in esecuzione su una piattaforma basata su CISC o RISC.

BufferAccessScsiPortControlled

Indica quando TRUE che il driver miniport chiama sempre ScsiPortXxx per accedere ai buffer di dati e/o alle informazioni sul senso della richiesta in SRB, consentendo così al driver di porta specifico del sistema operativo di ottimizzare l'elaborazione delle richieste di I/O. Se FALSE il driver miniport non deve chiamare routine ScsiPortXxx per accedere ai buffer di dati o alle informazioni sul senso della richiesta. L'impostazione di questo membro su FALSE può ridurre le prestazioni di I/O dell'HBA. Le routine di chiamata diverse da ScsiPortXxx rendono un driver miniport nonportabile nei sistemi operativi Microsoft.

MaximumNumberOfTargets

Specifica il numero di periferiche di destinazione che l'HBA può controllare. Per impostazione predefinita, il valore di questo membro è SCSI_MAXIMUM_TARGETS, in base allo standard SCSI. Un driver miniport può reimpostare questo membro su un valore minore se l'HBA ha funzionalità più limitate o a un valore maggiore, a indicare che l'HBA ha funzionalità Fibre Channel o Wide-SCSI. Questo valore è limitato alle SCSI_MAXIMUM_TARGETS_PER_BUS.

ReservedUchars[2]

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

SlotNumber

Specifica il numero di slot di un hba con valori corrispondenti a VendorId e DeviceId specificati nella struttura HW_INITIALIZATION_DATA (SCSI) quando il driver miniport denominato ScsiPortInitialize.

BusInterruptLevel2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

BusInterruptVector2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

InterruptMode2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

DmaChannel2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

DmaPort2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

DmaWidth2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

DmaSpeed2

Riservato per l'uso del sistema e non disponibile per l'uso da parte dei driver miniport.

DeviceExtensionSize

Specifica le dimensioni in byte richieste da un driver miniport per l'estensione del dispositivo PER HBA per gestire i trasferimenti di dati superiori a 64 KB, che potrebbero richiedere elenchi di dispersione/raccolta maggiori rispetto alle dimensioni definite nel Registro di sistema per questo driver.

SpecificLuExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'archiviazione per unità logica, se presente, per gestire i trasferimenti di dati superiori a 64 KB. Lasciare questo membro impostato su zero se il driver miniport non gestisce le informazioni per lu per cui richiede l'archiviazione. Questo valore si basa sul presupposto che l'HBA sia in grado di ricevere indirizzi a 32 bit, indipendentemente da ciò che il controller può effettivamente supportare. Se è necessario spazio aggiuntivo nelle estensioni LUN o SRB per gestire gli indirizzi a 64 bit, è necessario apportare modifiche appropriate a questo valore prima di usarlo con routine come ScsiPortGetUncachedExtension.

SrbExtensionSize

Specifica le dimensioni in byte richieste dal driver miniport per l'archiviazione per richiesta, se presente, per gestire i trasferimenti di dati superiori a 64.000. Impostare questo membro prima di chiamare ScsiPortGetUncachedExtension per modificare le dimensioni dell'archiviazione per richiesta in base a NumberOfPhysicalBreaks. Lasciare questo membro impostato su zero se il driver miniport non gestisce le informazioni per SRB per cui richiede l'archiviazione. Questo valore si basa sul presupposto che l'HBA sia in grado di ricevere indirizzi a 32 bit, indipendentemente da ciò che il controller può effettivamente supportare. Se è necessario spazio aggiuntivo nelle estensioni LUN o SRB per gestire gli indirizzi a 64 bit, è necessario apportare modifiche appropriate a questo valore prima di usarlo con routine come ScsiPortGetUncachedExtension.

Dma64BitAddresses

Indica che l'HBA è in grado di accedere agli indirizzi maggiori di 4 GB o 0x0FFFFFFFF se Dma64BitAddresses contiene un valore di SCSI_DMA64_MINIPORT_SUPPORTED. Prima di Windows 2000, ScsiPort imposta questo valore in base al contenuto di HW_INITIALIZATION_DATA (SCSI). Questo non si verifica più. In Windows 2000 il valore di Dma64BitAddresses è determinato solo dal callback del driver miniport HwScsiFindAdapter . Se il sistema operativo supporta uno spazio indirizzi a 64 bit, il driver della porta passa un valore di SCSI_DMA64_SYSTEM_SUPPORTED al driver miniport in questo membro. Se l'HBA descritto da PORT_CONFIGURATION_INFORMATION supporta anche spazi di indirizzi maggiori di 32 bit, il driver porta/miniport è necessario per supportare l'indirizzamento a 64 bit completo e il callback del driver miniport HwScsiFindAdapter indica questo assegnando un valore di SCSI_DMA64_MINIPORT_SUPPORTED a Dma64BitAddresses, scrivendo su qualsiasi valore precedente assegnato dal driver di porta. Il valore corretto deve essere assegnato al membro Dma64BitAddresses prima che il driver miniport chiami ScsiPortGetUncachedExtension.

ResetTargetSupported

Obsoleta. Il driver ScsiPort non invia più richieste SRB_FUNCTION_RESET_DEVICE ai driver miniport. Non utilizzare questo membro.

MaximumNumberOfLogicalUnits

Specifica il numero massimo di unità logiche per ogni destinazione che l'HBA può controllare. Per impostazione predefinita, il valore di questo membro è SCSI_MAXIMUM_LOGICAL_UNITS. Un driver miniport può reimpostare questo membro su un valore minore se l'HBA ha funzionalità più limitate o a un valore maggiore, a indicare che l'HBA ha funzionalità SCSI-3.

WmiDataProvider

Indica quando true che il driver miniport risponde alle richieste di Strumentazione gestione Windows (WMI). Se FALSE il driver miniport non risponde alle richieste di Strumentazione gestione Windows (WMI). Per impostazione predefinita, il valore di questo membro è FALSE.

Commenti

I membri specifici inizializzati dipendono dal driver miniport HBA e dalle informazioni di configurazione disponibili per il driver di porta specifico del sistema operativo. Il driver di porta specifico del sistema operativo imposta i valori predefiniti in tutti i membri per i quali non può fornire informazioni di configurazione alla routine HwScsiFindAdapter del driver miniport.

Tutti i driver miniport HBA devono avere almeno un set di valori predefiniti da usare per i membri pertinenti se il driver di porta specifico del sistema operativo non passa tutti i valori inizializzati.

La routine HwScsiFindAdapter deve aggiornare tutti i membri pertinenti a un HBA supportato dal driver.

I driver della classe di archiviazione di Windows NT, che vengono caricati in un secondo momento rispetto ai driver miniport, dipendono dalle informazioni fornite dalla routine HwScsiFindAdapter di ogni driver miniport per configurare le richieste di I/O successive. Ad esempio, i valori MaximumTransferLength e NumberOfPhysicalBreaks forniti da ogni driver miniport controllano se un driver di classe deve suddividere le richieste di trasferimento di grandi dimensioni in un set di trasferimenti parziali in base ai limiti dell'HBA.

Il membro Dma64BitAddresses di PORT_CONFIGURATION_INFORMATION non deve più essere considerato come valore BOOLEAN. Un valore di SCSI_DMA64_SYSTEM_SUPPORTED indica che il driver porta/miniport è necessario per supportare l'indirizzamento a 64 bit, ma la routine ScsiPortGetUncachedExtension interpreta comunque qualsiasi valore diverso da zero di Dma64BitAddresses come indica che è necessario il supporto a 64 bit. Ciò significa che ScsiPortGetUncachedExtension funziona ancora correttamente quando viene chiamato da un driver legacy che assegna valori BOOLEAN a Dma64BitAddresses.

Oltre a Dma64BitAddresses, sia PORT_CONFIGURATION_INFORMATION che HW_INITIALIZATION_DATA hanno una coppia di membri denominati SpecificLuExtensionSize e SrbExtensionSize i cui valori devono ora essere gestiti in modo diverso. Il driver miniport deve calcolare i valori iniziali di SpecificLuExtensionSize e SrbExtensionSize in HW_INITIALIZATION_DATA in base al presupposto che l'HBA sia in grado di ricevere indirizzi a 32 bit, indipendentemente dal supporto effettivo del controller. Anche i valori predefiniti per SpecificLuExtensionSize e SrbExtensionSize in PORT_CONFIGURATION_INFORMATION si basano su un presupposto di indirizzamento a 32 bit, poiché i valori in PORT_CONFIGURATION_INFORMATION derivano dai valori in HW_INITIALIZATION_DATA.

Ciò significa che se il driver miniport necessita di spazio aggiuntivo nell'estensione LUN o nell'estensione SRB per gestire gli indirizzi fisici a 64 bit, deve modificare i valori per SpecificLuExtensionSize e SrbExtensionSize in PORT_CONFIGURATION_INFORMATION per tenere conto di questo prima di passare PORT_CONFIGURATION_INFORMATION a ScsiPortGetUncachedExtension.

Requisiti

Requisito Valore
Intestazione srb.h (include Srb.h, Storport.h, Strmini.h)

Vedi anche

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRange