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 le informazioni di configurazione specifiche di HBA il più possibile e passa la struttura alla routine HwScsiFindAdapter del driver miniport. Il driver di porta ottiene alcune delle informazioni per questa struttura dalla struttura di HW_INITIALIZATION_DATA del driver miniport. Il driver miniport HwScsiFindAdapter routine è responsabile di determinare 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 porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. Usare invece driver Storport e modelli di driver 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;
Membri
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 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 strutturaHW_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 AdapterInterfaceType specificato e HBA, il valore impostato per questo membro può corrispondere a IRQL per il bus, ad esempio per Isa e i bus di tipo 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 i propri HBA. È pertinente per gli HBA sui tipi di bus di I/O che usano vettori di interrupt, ad esempio PCIBus.
InterruptMode
Specifica se l'HBA usa levelSensitive o latch (talvolta denominati interrupt "con trigger 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 gli interrupt sensibili al livello, in quanto devono essere driver di HBA negli autobus 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 sull'HBA, questo membro può essere regolato durante lo sviluppo del driver per garantire che il tempo trascorso nell'ISR del driver miniport non causi il passaggio del mouse o la velocità effettiva seriale/parallela a un livello evidente dell'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 interruzioni fisiche. Se il driver di porta imposta un valore per questo membro, il driver miniport può regolare 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 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 il AdapterInterfaceType specificato è MicroChannel, il driver miniport deve impostare questo membro.
DmaWidth
Specifica la larghezza dei trasferimenti DMA se l'HBA usa DMA. Per impostazione predefinita, il valore di questo membro è zero. Se l'HBA esegue DMA, il driver miniport deve reimpostare questo membro in uno dei modi seguenti: Width8Bits, Width16Bitso Width32Bits.
DmaSpeed
Specifica la velocità di trasferimento dei dati DMA per Eisa HBA. Per impostazione predefinita, il valore di questo membro specifica la tempistica di compatibilità. I valori accettabili per questo membro sono i seguenti: Compatible, TypeA, TypeBo TypeC.
AlignmentMask
Contiene una maschera che indica le restrizioni di allineamento per i buffer richiesti dall'HBA per le operazioni di trasferimento. I valori della maschera validi sono limitati anche dalle caratteristiche dei gestori di 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 (DWORD allineati). In Windows NT e Windows 2000 i valori validi della maschera sono 0 (allineati a byte), 1 (allineati a parole), 3 (DWORD allineati) e 7 (doppio DWORD allineato). Il driver miniport deve impostare questa maschera se l'HBA supporta la raccolta/dispersione.
NumberOfAccessRanges
Specifica il numero di AccessRanges elementi 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 di porta, se possibile. Ogni driver miniport deve aggiornare specifiche di InitiatorBusId in modo che corrispondano a quanto viene usato dall'HBA, se necessario 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 NumberOf Bus.
ScatterGather
Indica quando TRUE che l'HBA supporta la raccolta/dispersione. Quando FALSE l'HBA non supporta la raccolta/dispersione. Per impostazione predefinita, il valore di questo membro è FALSE.
Master
Indica quando TRUE che l'HBA è un master bus. Quando 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. Quando 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 invia una 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 che il BIOS per l'HBA analizza le destinazioni del bus SCSI da sette a zero. Quando FALSE, il BIOS per l'HBA cerca le destinazioni del bus SCSI, a partire da un ID zero e analizzando verso l'alto (ma non incluso) MaximumTargetIds. Per impostazione predefinita, il valore di AdapterScansDown è FALSE.
AtdiskPrimaryClaimed
Indica quando TRUE che l'intervallo di indirizzi del disco primario "AT" (compatibile con WD1003), 0x1F0 a 0x1FF, sia 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 in TRUE, impedendo così l'accesso a questo intervallo dal driver del disco "AT" o successivamente caricando i driver miniport.
AtdiskSecondaryClaimed
Indica quando TRUE che l'intervallo di indirizzi del disco AT secondario 0x170 a 0x17F è stato richiesto nel Registro di sistema da un altro driver per il dispositivo. Quando 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. Quando 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 che 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 di cui è necessario eseguire il mapping dei buffer di dati agli intervalli di indirizzi virtuali di sistema. Quando 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 strutturaHW_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 Srb.DataBuffer.
NeedPhysicalAddresses
Indica quando TRUE che il driver miniport deve convertire gli indirizzi virtuali in indirizzi fisici, come richiesto dall'HBA. Quando 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 strutturaHW_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. Quando 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 strutturaHW_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 l'HBA supporta il senso della richiesta automatica. Quando FALSE HBA non supporta il senso della richiesta automatica. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella strutturaHW_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 bus-master HBA chiami ScsiPortGetUncachedExtension.
MultipleRequestPerLu
Indica quando TRUE che HBA supporta più richieste per unità logica. Quando FALSE l'HBA non supporta più richieste per unità logica. Il meccanismo in base al quale l'adapter memorizza nella cache le richieste è definito dall'adattatore. Il driver di porta specifico del sistema operativo imposta sempre questo membro sul valore passato nella strutturaHW_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 HBA supporta operazioni di ricezione-evento SCSI. Quando FALSE 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 strutturaHW_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) abbia già inizializzato l'HBA. Quando FALSE hba non è stata inizializzata in precedenza da un driver in modalità reale. Il driver di porta dipendente dal sistema operativo inizializza sempre questo membro. Se questa proprietà è impostata 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 sua 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 SBS, consentendo così al driver di porta specifico del sistema operativo di ottimizzare l'elaborazione delle richieste di I/O. Quando FALSE il driver miniport non deve chiamare ScsiPortXxx routine 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. La chiamata di routine diverse dalla ScsiPortXxx rende un driver miniportabile 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à Wide-SCSI o Fibre Channel. 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 al VendorId e DeviceId specificati nella strutturaHW_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.000, 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.000. Lasciare questo membro impostato su zero se il driver miniport non mantiene 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 mantiene 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 il ScsiPort imposta questo valore in base al contenuto di HW_INITIALIZATION_DATA (SCSI). Questo non è più il caso. In Windows 2000 il valore di Dma64BitAddresses è determinato 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
Obsoleto. Il driver ScsiPort non invia più SRB_FUNCTION_RESET_DEVICE richieste ai driver miniport. Non utilizzare questo membro.
MaximumNumberOfLogicalUnits
Specifica il numero massimo di unità logiche per 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 wmi (Windows Management Instrumentation). Quando FALSE il driver miniport non risponde alle richieste wmi (Windows Management Instrumentation). Per impostazione predefinita, il valore di questo membro è FALSE.
Osservazioni
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 al driver miniport HwScsiFindAdapter routine.
Tutti i driver miniport HBA devono avere almeno un set di impostazioni predefinite 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 di classe di archiviazione di Windows NT, che vengono caricati in un secondo momento rispetto ai driver miniport, dipendono dalle informazioni fornite da ogni driver miniport HwScsiFindAdapter routine per configurare le richieste di I/O successive. Ad esempio, il MaximumTransferLength e NumberOfPhysicalBreaks valori forniti da ogni driver miniport controllano se un driver di classe deve suddividere richieste di trasferimento di grandi dimensioni in un set di trasferimenti parziali in base ai limiti dell'HBA.
Il Dma64BitAddresses membro 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 il ScsiPortGetUncachedExtension routine interpreta comunque qualsiasi valore diverso da zero di Dma64BitAddresses a indicare 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. I valori predefiniti per SpecificLuExtensionSize e SrbExtensionSize in PORT_CONFIGURATION_INFORMATION saranno basati anche 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 richiede 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.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | srb.h (include Srb.h, Storport.h, Strmini.h) |