Partager via


Fonction NdisAllocateMdl (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

Un 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.

Important  

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 d’ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority ou NdisMAllocateSharedMemory. En particulier, il ne doit pas être utilisé avec la mémoire 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, comme IoAllocateMdl combiné à MmProbeAndLockPages.

 

[in] Length

Taille, en octets, de la mémoire tampon.

Valeur retournée

NdisAllocateMdl retourne un pointeur vers le MDL alloué. Si l’allocation échoue, la valeur de retour est NULL.

Remarques

Toutes les dll MDL qui sont allouées en appelant NdisAllocateMdl doivent être libérées 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 le MDL, ce qui signifie que l’appelant doit générer le MDL en appelant MmBuildMdlForNonPagedPool ou MmProbeAndLockPages.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Universal
Version UMDF minimale 2,33
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)

Voir aussi

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory