Condividi tramite


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 all'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 a dispersione/raccolta.

[out] TargetMdl

Puntatore a una variabile utilizzata dalla routine per restituire il file MDL creato per contenere il buffer descritto dall'elenco a 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 riuscita.
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 file 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 a dispersione/raccolta.

Osservazioni

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 usare tale copia 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.

Fabbisogno

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)

Vedere anche

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST