Condividi tramite


Funzione NdisAllocateMdl (ndis/mdlapi.h)

La funzione NdisAllocateMdl alloca un MDL che descrive il buffer di memoria in corrispondenza dell'indirizzo virtuale specificato.

Sintassi

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

Parametri

[in] NdisHandle

Handle NDIS ottenuto durante l'inizializzazione del chiamante. Per altre informazioni, vedere Ottenere handle di pool.

[in] VirtualAddress

Puntatore all'indirizzo virtuale di base del buffer che deve essere descritto da MDL.

importanti  

Il parametro virtualAddress per NdisAllocateMdl accetta solo memoria dal pool non di paging. In altre parole, richiede memoria da ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriorityo NdisMAllocateSharedMemory. In particolare, deve non essere usato con memoria dallo stack, dal pool di paging, dai dati globali del driver o da altre aree di memoria.

Se un driver deve compilare un file MDL per una di queste aree del pool non di pagine, deve usare le API del kernel appropriate per quel tipo di memoria, ad esempio IoAllocateMdl combinate con MmProbeAndLockPages.

 

[in] Length

Dimensioni, in byte, del buffer di memoria.

Valore restituito

NdisAllocateMdl restituisce un puntatore al file MDL allocato. Se l'allocazione non riesce, il valore restituito viene NULL.

Osservazioni

Tutti gli MDL allocati chiamando NdisAllocateMdl devono essere liberati chiamando la funzione NdisFreeMdl.

NdisAllocateMdl alloca memoria e compila il file MDL in un unico passaggio. Questo processo è diverso da IoAllocateMdl, che alloca solo la memoria per il file MDL, ovvero il chiamante deve compilare il file MDL chiamando MmBuildMdlForNonPagedPool o MmProbeAndLockPages.

Fabbisogno

Requisito Valore
client minimo supportato Supportato in NDIS 6.0 e versioni successive.
piattaforma di destinazione Universale
versione minima di UMDF 2.33
intestazione ndis/mdlapi.h (include ndis.h)
libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
regole di conformità DDI Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis)

Vedere anche

exAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory