NdisAllocateMdl, fonction (ndis/mdlapi.h)
La fonction NdisAllocateMdl alloue un MDL qui décrit la mémoire tampon à l’adresse virtuelle spécifiée.
Syntaxe
NDIS_EXPORTED_ROUTINE MDL * NdisAllocateMdl(
[in] NDIS_HANDLE NdisHandle,
[in] PVOID VirtualAddress,
[in] ULONG Length
);
Paramètres
[in] NdisHandle
Handle NDIS obtenu lors de l’initialisation de l’appelant. Pour plus d’informations, consultez Obtention de handles de pool.
[in] VirtualAddress
Pointeur vers l’adresse virtuelle de base de la mémoire tampon que le MDL doit décrire.
Le paramètre VirtualAddress pour NdisAllocateMdl accepte uniquement la mémoire du pool non paginé. En d’autres termes, il nécessite de la mémoire de ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority, ou NdisMAllocateSharedMemory. En particulier, il doit ne pas être utilisé avec de la mémoire à partir de la pile, du pool paginé, des données globales du pilote ou d’autres régions de mémoire.
Si un pilote doit générer un MDL pour l’une de ces régions de pool non paginés, il doit utiliser les API de noyau appropriées pour ce type de mémoire, telles que IoAllocateMdl combinées avec MmProbeAndLockPages.
[in] Length
Taille, en octets, de la mémoire tampon.
Valeur de retour
NdisAllocateMdl retourne un pointeur vers le MDL alloué. Si l’allocation échoue, la valeur de retour est NULL.
Remarques
Tous les MDL alloués en appelant NdisAllocateMdl doivent être libérés en appelant la fonction NdisFreeMdl.
NdisAllocateMdl alloue de la mémoire et génère le MDL en une seule étape. Ce processus est différent de IoAllocateMdl, qui alloue uniquement de la mémoire pour mdL, ce qui signifie que l’appelant doit générer le MDL en appelant MmBuildMdlForNonPagedPool ou MmProbeAndLockPages.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Prise en charge dans NDIS 6.0 et versions ultérieures. |
plateforme cible | Universel |
version minimale de UMDF | 2.33 |
d’en-tête | ndis/mdlapi.h (include ndis.h) |
bibliothèque | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
règles de conformité DDI | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |