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 Recupero di handle del pool.

[in] VirtualAddress

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

Importante  

Il parametro VirtualAddress per NdisAllocateMdl accetta solo la memoria dal pool non di paging. In altre parole, richiede memoria da ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority o NdisMAllocateSharedMemory. In particolare, non deve 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 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 combinato con MmProbeAndLockPages.

 

[in] Length

Dimensione, in byte, del buffer di memoria.

Valore restituito

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

Commenti

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

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

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Universale
Versione UMDF minima 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)

Vedi anche

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory