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.
Der VirtualAddress-Parameter für NdisAllocateMdl akzeptiert nur Arbeitsspeicher aus dem nicht auslagerten Pool. Anders ausgedrückt: Es erfordert Arbeitsspeicher aus ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority oder NdisMAllocateSharedMemory. Insbesondere sollte sie nicht mit Arbeitsspeicher aus dem Stapel, dem ausgelagerten Pool, den globalen Treiberdaten oder anderen Speicherregionen verwendet werden.
Wenn ein Treiber eine MDL für eine dieser nicht ausseitigen Poolregionen 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.
Hinweise
Alle MDLs, die durch Aufrufen von NdisAllocateMdl zugeordnet werden, müssen durch Aufrufen der NdisFreeMdl-Funktion freigegeben werden.
NdisAllocateMdl belegt Arbeitsspeicher und erstellt die MDL in einem Schritt. Dieser Prozess unterscheidet sich von IoAllocateMdl, das nur Arbeitsspeicher für die MDL zuordnet, d. h. der Aufrufer muss die MDL erstellen, indem er entweder MmBuildMdlForNonPagedPool oder MmProbeAndLockPages aufruft.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.0 und höher. |
Zielplattform | Universell |
Header | ndis/mdlapi.h (include ndis.h) |
Bibliothek | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI-Complianceregeln | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für