Funzione StorPortBuildScatterGatherList (storport.h)
La routine StorPortBuildScatterGatherList crea un elenco di dispersione/raccolta per il buffer di dati specificato.
Sintassi
ULONG StorPortBuildScatterGatherList(
[in] PVOID HwDeviceExtension,
[in] PVOID Mdl,
[in] PVOID CurrentVa,
[in] ULONG Length,
[in] PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
[in] PVOID Context,
[in] BOOLEAN WriteToDevice,
[in, out] PVOID ScatterGatherBuffer,
[in] ULONG ScatterGatherBufferLength
);
Parametri
[in] HwDeviceExtension
Puntatore all'estensione del dispositivo hardware per l'adattatore del bus host (HBA).
[in] Mdl
Puntatore a un elenco di descrittori di memoria (MDL) che descrive le pagine di memoria associate al buffer di dati.
[in] CurrentVa
Indirizzo virtuale del buffer dei dati.
[in] Length
Lunghezza, in byte, del buffer di dati.
[in] ExecutionRoutine
Puntatore a un driver miniport fornito da ExecutionRoutine. Il driver Storport chiama questa routine dopo aver creato l'elenco di dispersione/raccolta. Il driver miniport deve eseguire tutte le operazioni che usano l'elenco di dispersione/raccolta all'interno della routine di esecuzione, non nel codice che segue la chiamata alla routine StorPortBuildScatterGatherList .
Un executionRoutine viene dichiarato come segue:
VOID
ExecutionRoutine (
IN PVOID *DeviceObject,
IN PVOID *Irp,
IN PSTOR_SCATTER_GATHER_LIST ScatterGather,
IN PVOID Context
);
DeviceObject
I driver miniport devono ignorare questo parametro.
Irp
I driver miniport devono ignorare questo parametro.
ScatterGather
Puntatore a una struttura STOR_SCATTER_GATHER_LIST che contiene l'elenco di dispersione/raccolta per il buffer di dati specificato.
Contesto
Valore di contesto specificato nel parametro Context della funzione StorPortBuildScatterGatherList.
Il driver Storport chiama un miniport driver ExecutionRoutine in IRQL = DISPATCH_LEVEL.
[in] Context
Valore di contesto passato dal driver di porta alla routine di esecuzione specificata nel parametro ExecutionRoutine . La routine di esecuzione usa questo valore per identificare in modo univoco la richiesta.
[in] WriteToDevice
Valore che indica la direzione del trasferimento DMA. Un valore true indica un trasferimento dal buffer di dati al dispositivo e un valore false indica un trasferimento dal dispositivo al buffer dei dati.
[in, out] ScatterGatherBuffer
Puntatore a un buffer fornito da miniport che riceve l'elenco di dispersione/raccolta. Un driver miniport può allocare memoria per questo buffer chiamando la routine StorPortAllocatePool .
[in] ScatterGatherBufferLength
Dimensioni, in byte, del buffer a cui punta il parametro ScatterGatherBuffer .
Valore restituito
StorPortBuildScatterGatherList restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
Questa funzione non viene implementata nel sistema operativo attivo. |
|
Indica che la routine ha creato correttamente l'elenco di dispersione/raccolta.
Importante Vedere "Osservazioni".
|
|
Il valore HwDeviceExtension passato è NULL. |
|
La chiamata è stata effettuata in un IRQL non valido. |
|
Il sistema dispone di registri mappa insufficienti disponibili per il trasferimento. |
|
Il parametro Length è troppo grande per adattarsi all'interno del buffer. |
Commenti
Il driver miniport chiama StorPortPutScatterGatherList per rilasciare le risorse assegnate da StorPortBuildScatterGatherList durante la costruzione dell'elenco di dispersione/raccolta.
Il driver miniport deve chiamare StorPortPutScatterGatherList prima di liberare o riutilizzare la memoria allocata per l'elenco di dispersione/raccolta.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | Storport.h (include Storport.h) |
IRQL | DISPATCH_LEVEL |