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