PBUILD_MDL_FROM_SCATTER_GATHER_LIST Rückruffunktion (wdm.h)

Die BuildMdlFromScatterGatherList-Routine erstellt eine MDL aus einer vom System zugeordneten Scatter/Gather-Liste.

Diese Routine ist für die Systemverwendung reserviert.

Syntax

PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;

NTSTATUS PbuildMdlFromScatterGatherList(
  [in]  PDMA_ADAPTER DmaAdapter,
  [in]  PSCATTER_GATHER_LIST ScatterGather,
  [in]  PMDL OriginalMdl,
  [out] PMDL *TargetMdl
)
{...}

Parameter

[in] DmaAdapter

Zeiger auf die DMA_ADAPTER-Struktur, die von IoGetDmaAdapter zurückgegeben wird und den Bus-master-Adapter oder DMA-Controller darstellt.

[in] ScatterGather

Zeiger auf die SCATTER_GATHER_LIST Struktur, die an die AdapterListControl-Routine des Treibers übergeben wird.

[in] OriginalMdl

Zeiger auf die ursprüngliche MDL, die der Treiber zum Erstellen der Scatter/Gather-Liste verwendet hat.

[out] TargetMdl

Zeiger auf eine Variable, die von der Routine verwendet wird, um die MDL zurückzugeben, die erstellt wurde, um den puffer zu enthalten, der von der Scatter/Gather-Liste beschrieben wird. Der zurückgegebene Wert kann mit OriginalMdl identisch sein.

Rückgabewert

BuildMdlFromScatterGatherList gibt einen der folgenden status Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Der Vorgang wurde erfolgreich ausgeführt.
STATUS_INVALID_PARAMETER Der Parameter OriginalMdl ist NULL.
STATUS_INSUFFICIENT_RESOURCES Es ist nicht genügend Arbeitsspeicher verfügbar, um eine neue MDL zuzuweisen.
STATUS_NONE_MAPPED Das System hat bereits eine neue MDL für die Speicherspeicherorte in der Scatter/Gather-Liste erstellt. (Dies geschieht nur, wenn die Routine zweimal in derselben Punkt-/Gather-Liste aufgerufen wird.)

Hinweise

BuildMdlFromScatterGatherList ist keine Systemroutine, die direkt nach Namen aufgerufen werden kann. Diese Routine kann nur durch den Zeiger von der Adresse aufgerufen werden, die in einer DMA_OPERATIONS-Struktur zurückgegeben wird. Treiber erhalten die Adresse dieser Routine, indem sie IoGetDmaAdapter aufrufen, wobei der Version-Member des DeviceDescription-Parameters auf DEVICE_DESCRIPTION_VERSION2 festgelegt ist. Wenn IoGetDmaAdapterNULL zurückgibt, ist die Routine auf Ihrer Plattform nicht verfügbar.

Wenn ein Treiber eine Punkt-/Sammlungsliste erstellt, um auf ein Gerät zu schreiben, kann das System eine Kopie der zu schreibenden Daten erstellen und diese Kopie verwenden, um den DMA-Vorgang auszuführen. Verwenden Sie diese Routine, um auf die Speicherspeicherorte in der Punkt-/Sammlungsliste zuzugreifen, unabhängig davon, ob es sich bei diesen Speicherorten um eine Kopie handelt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows XP und höheren Versionen von Windows.
Zielplattform Desktop
Kopfzeile wdm.h (wdm.h einschließen)
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln IrqlDispatch(wdm)

Weitere Informationen

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

SCATTER_GATHER_LIST