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) |