Funzione NdisAllocateMdl (ndis/mdlapi.h)

La funzione NdisAllocateMdl alloca un MDL che descrive il buffer di memoria nell'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 Recupero di handle del pool.

[in] VirtualAddress

Puntatore all'indirizzo virtuale di base del buffer da descrivere.

Importante  

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

Se un driver deve creare un MDL per una di queste aree del pool non di pagina, deve usare le API del kernel appropriate per tale tipo di memoria, ad esempio IoAllocateMdl combinata con MmProbeAndLockPages.

 

[in] Length

Dimensioni, in byte, del buffer di memoria.

Valore restituito

NdisAllocateMdl restituisce un puntatore all'MDL allocato. Se l'allocazione ha esito negativo, il valore restituito è NULL.

Commenti

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

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

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Intestazione ndis/mdlapi.h (include ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis)

Vedi anche

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory