Freigeben über


NdisAllocateMdl-Funktion (ndis/mdlapi.h)

Die NdisAllocateMdl-Funktion weist eine MDL zu, die den Speicherpuffer an der angegebenen virtuellen Adresse beschreibt.

Syntax

NDIS_EXPORTED_ROUTINE MDL * NdisAllocateMdl(
  [in] NDIS_HANDLE NdisHandle,
  [in] PVOID       VirtualAddress,
  [in] ULONG       Length
);

Parameter

[in] NdisHandle

Ein NDIS-Handle, das während der Initialisierung des Aufrufers abgerufen wurde. Weitere Informationen finden Sie unter Abrufen von Poolhandles.

[in] VirtualAddress

Ein Zeiger auf die virtuelle Basisadresse des Puffers, den die MDL beschreiben soll.

Wichtige  

Der parameter VirtualAddress für NdisAllocateMdl akzeptiert nur Speicher aus dem nicht ausseitigen Pool. Mit anderen Worten, es erfordert Speicher von ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriorityoder NdisMAllocateSharedMemory. Es sollte insbesondere nicht mit Speicher aus dem Stapel, dem ausgelagerten Pool, den globalen Treiberdaten oder anderen Speicherbereichen verwendet werden.

Wenn ein Treiber eine MDL für einen dieser nicht seitenfreien Poolbereiche erstellen muss, sollte er die entsprechenden Kernel-APIs für diesen Speichertyp verwenden, z. B. IoAllocateMdl in Kombination mit MmProbeAndLockPages.

 

[in] Length

Die Größe des Speicherpuffers in Bytes.

Rückgabewert

NdisAllocateMdl gibt einen Zeiger auf die zugeordnete MDL zurück. Wenn die Zuordnung fehlschlägt, ist der Rückgabewert NULL-.

Bemerkungen

Alle MDLs, die durch Aufrufen von NdisAllocateMdl- zugewiesen werden, müssen durch Aufrufen der NdisFreeMdl-Funktion freigegeben werden.

NdisAllocateMdl ordnet Arbeitsspeicher zu und erstellt die MDL in einem Schritt. Dieser Prozess unterscheidet sich von IoAllocateMdl, der nur Speicher für die MDL zuweist, was bedeutet, dass der Aufrufer die MDL erstellen muss, indem entweder MmBuildMdlForNonPagedPool oder MmProbeAndLockPages aufgerufen wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Universal
Mindest-UMDF-Version 2.33
Header- ndis/mdlapi.h (include ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis)

Siehe auch

ExAllocatePool-

IoAllocateMdl-

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory