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