Freigeben über


PBUILD_MDL_FROM_SCATTER_GATHER_LIST Rückruffunktion (wdm.h)

Die BuildMdlFromScatterGatherList Routine erstellt eine MDL aus einer XY/Gather-Liste, die vom System zugewiesen wird.

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, die den Busmasteradapter oder DMA-Controller darstellt.

[in] ScatterGather

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

[in] OriginalMdl

Zeigen Sie auf die ursprüngliche MDL, die der Treiber zum Erstellen der Punkt/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 durch die Punkt/Gather-Liste beschriebenen Puffer zu enthalten. Der zurückgegebene Wert kann mit OriginalMdlidentisch sein.

Rückgabewert

BuildMdlFromScatterGatherList gibt einen der folgenden Statuscodes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS Der Vorgang war erfolgreich.
STATUS_INVALID_PARAMETER Der parameter OriginalMdl ist NULL.
STATUS_INSUFFICIENT_RESOURCES Es steht nicht genügend Arbeitsspeicher zur Verfügung, um eine neue MDL zuzuweisen.
STATUS_NONE_MAPPED Das System hat bereits eine neue MDL für die Speicherspeicherorte in der Punkt-/Gather-Liste erstellt. (Dies geschieht nur, wenn die Routine zweimal in derselben Punkt-/Gatherliste aufgerufen wird.)

Bemerkungen

BuildMdlFromScatterGatherList ist keine Systemroutine, die direkt anhand des Namens aufgerufen werden kann. Diese Routine kann nur durch Zeiger von der in einer DMA_OPERATIONS Struktur zurückgegebenen Adresse aufgerufen werden. Treiber rufen die Adresse dieser Routine ab, indem sie IoGetDmaAdapter- mit dem Version Member des DeviceDescription- Parameters auf DEVICE_DESCRIPTION_VERSION2 festgelegt wird. Wenn IoGetDmaAdapterNULL-zurückgibt, ist die Routine auf Ihrer Plattform nicht verfügbar.

Wenn ein Treiber eine Punkt-/Sammelliste zum Schreiben auf ein Gerät erstellt, 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-/Erfassungsliste zuzugreifen, unabhängig davon, ob es sich bei diesen Speicherorten um eine Kopie handelt.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows XP und höheren Versionen von Windows.
Zielplattform- Desktop
Header- wdm.h (include Wdm.h)
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln IrqlDispatch(wdm)

Siehe auch

BuildScatterGatherList

DEVICE_DESCRIPTION

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter-

SCATTER_GATHER_LIST