Condividi tramite


Funzione ScsiPortGetUncachedExtension (srb.h)

La routine ScsiPortGetUncachedExtension alloca memoria che può essere usata sia dalla CPU che da un HBA master del bus per DMA o per i dati condivisi.

Nota I modelli di driver di porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare il driver Storport e i modelli di driver miniport Storport .
 

Sintassi

SCSIPORT_API PVOID ScsiPortGetUncachedExtension(
  [in] PVOID                           HwDeviceExtension,
  [in] PPORT_CONFIGURATION_INFORMATION ConfigInfo,
  [in] ULONG                           NumberOfBytes
);

Parametri

[in] HwDeviceExtension

Puntatore all'estensione del dispositivo hardware. Si tratta di un'area di archiviazione per HBA che il driver di porta alloca e inizializza per conto del driver miniport. I driver Miniport archivia in genere informazioni specifiche dell'HBA in questa estensione, ad esempio lo stato dell'HBA e gli intervalli di accesso mappati dell'HBA. Questa area è disponibile per il driver miniport nel membro DeviceExtension-HwDeviceExtension> dell'oggetto dispositivo HBA subito dopo che il driver miniport chiama ScsiPortInitialize. Il driver della porta libera questa memoria quando rimuove il dispositivo.

[in] ConfigInfo

Specifica informazioni sulle funzionalità DMA dell'HBA. I membri seguenti devono essere compilati: DmaChannel o DmaPort, DmaWidth, DmaSpeed, MaximumTransferLength, ScatterGather, Master impostato su TRUE, NumberOfPhysicalBreaks, AdapterInterfaceType, Dma32BitAddresses, SystemIoBusNumber, AutoRequestSense e SrbExtensionSize.

I membri che non sono pertinenti all'HBA, ad esempio DmaChannel per un adattatore bus-master EISA, devono essere lasciati così com'è.

[in] NumberOfBytes

Indica le dimensioni in byte dell'estensione non memorizzata nella cache da allocare. I driver in Windows XP e nei sistemi operativi precedenti non devono allocare più di 100 kilobyte di estensione non memorizzata nella cache e se partecipano alle operazioni di I/O nel file di ibernazione o nel file di dump di arresto anomalo del sistema, devono limitare la quantità di estensione non memorizzata nella cache allocata a meno di 32 kilobyte.

Valore restituito

ScsiPortGetUncachedExtension restituisce un puntatore di indirizzo virtuale all'estensione non memorizzata nella cache. Se non è in grado di allocare la memoria richiesta, restituisce NULL.

Commenti

ScsiPortGetUncachedExtension può essere chiamato solo dalla routine HwScsiFindAdapter del driver miniport e solo per un HBA master del bus. Le chiamate da altre routine del driver miniport genereranno un errore di sistema o un'operazione non corretta per il chiamante.

Poiché i computer di fascia alta hanno cache e memorie di grandi dimensioni, qualsiasi memoria da condividere tra un HBA e la CPU deve essere allocata in modo speciale. Le cassette postali o le code di richieste di I/O nella memoria di sistema sono esempi di questo tipo di memoria condivisa.

Un driver miniport deve impostare SrbExtensionSize. Prima di chiamare ScsiPortGetUncachedExtension per modificare le dimensioni dell'archiviazione per richiesta in base a NumberOfPhysicalBreaks.

La routine HwScsiFindAdapter può chiamare ScsiPortGetUncachedExtension una sola volta per ogni HBA master del bus supportata dal driver miniport.

Per ottenere l'indirizzo fisico per l'estensione non memorizzata nella cache che può essere usata dall'HBA, chiamare ScsiPortGetPhysicalAddress.

Il driver ScsiPort libera la memoria allocata da ScsiPortGetUncachedExtension quando il dispositivo adattatore viene arrestato.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione srb.h (include Miniport.h, Scsi.h)
Libreria Scsiport.lib

Vedi anche

HwScsiFindAdapter

PORT_CONFIGURATION_INFORMATION (SCSI)

ScsiPortGetPhysicalAddress