PBUILD_MDL_FROM_SCATTER_GATHER_LIST funzione di callback (wdm.h)
La routine BuildMdlFromScatterGatherList compila un MDL da un elenco a dispersione/raccolta allocato dal sistema.
Questa routine è riservata per l'uso del sistema.
Sintassi
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
Parametri
[in] DmaAdapter
Puntatore alla struttura DMA_ADAPTER restituita da IoGetDmaAdapter che rappresenta l'adattatore bus-master o il controller DMA.
[in] ScatterGather
Puntatore alla struttura SCATTER_GATHER_LIST passata alla routine AdapterListControl del driver.
[in] OriginalMdl
Puntatore al file MDL originale usato dal driver per compilare l'elenco di dispersione/raccolta.
[out] TargetMdl
Puntatore a una variabile utilizzata dalla routine per restituire il file MDL creato per contenere il buffer descritto dall'elenco di dispersione/raccolta. Il valore restituito può essere uguale a OriginalMdl.
Valore restituito
BuildMdlFromScatterGatherList restituisce uno dei codici di stato seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | Operazione completata. |
STATUS_INVALID_PARAMETER | Il parametro OriginalMdl è NULL. |
STATUS_INSUFFICIENT_RESOURCES | Memoria insufficiente per allocare un nuovo file MDL. |
STATUS_NONE_MAPPED | Il sistema ha già creato un nuovo MDL per le posizioni di memoria nell'elenco a dispersione/raccolta. Questa operazione si verifica solo se la routine viene chiamata due volte nello stesso elenco di dispersione/raccolta. |
Commenti
BuildMdlFromScatterGatherList non è una routine di sistema che può essere chiamata direttamente per nome. Questa routine può essere chiamata solo dal puntatore dall'indirizzo restituito in una struttura DMA_OPERATIONS . I driver ottengono l'indirizzo di questa routine chiamando IoGetDmaAdapter con il membro Version del parametro DeviceDescription impostato su DEVICE_DESCRIPTION_VERSION2. Se IoGetDmaAdapter restituisce NULL, la routine non è disponibile nella piattaforma.
Quando un driver crea un elenco a dispersione/raccolta da scrivere in un dispositivo, il sistema può creare una copia dei dati da scrivere e usarlo per eseguire l'operazione DMA. Utilizzare questa routine per accedere ai percorsi di memoria nell'elenco a dispersione/raccolta, indipendentemente dal fatto che tali posizioni siano una copia.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows XP e versioni successive di Windows. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h) |
IRQL | <= DISPATCH_LEVEL |
Regole di conformità DDI | IrqlDispatch(wdm) |