Función NdisAllocateMdl (ndis/mdlapi.h)
La función NdisAllocateMdl asigna una MDL que describe el búfer de memoria en la dirección virtual especificada.
Sintaxis
NDIS_EXPORTED_ROUTINE MDL * NdisAllocateMdl(
[in] NDIS_HANDLE NdisHandle,
[in] PVOID VirtualAddress,
[in] ULONG Length
);
Parámetros
[in] NdisHandle
Identificador NDIS que se obtuvo durante la inicialización del autor de la llamada. Para obtener más información, consulte Obtención de identificadores de grupo.
[in] VirtualAddress
Puntero a la dirección virtual base del búfer que se va a describir.
El parámetro VirtualAddress para NdisAllocateMdl solo acepta memoria del grupo no paginado. En otras palabras, requiere memoria de ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority o NdisMAllocateSharedMemory. En concreto, no se debe usar con memoria de la pila, el grupo paginado, los datos globales del controlador u otras regiones de memoria.
Si un controlador necesita compilar una MDL para una de estas regiones de grupo no paginadas, debe usar las API de kernel adecuadas para ese tipo de memoria, como IoAllocateMdl combinado con MmProbeAndLockPages.
[in] Length
Tamaño, en bytes, del búfer de memoria.
Valor devuelto
NdisAllocateMdl devuelve un puntero a la MDL asignada. Si se produce un error en la asignación, el valor devuelto es NULL.
Comentarios
Todas las MDL que se asignan mediante una llamada a NdisAllocateMdl deben liberarse llamando a la función NdisFreeMdl .
NdisAllocateMdl asigna memoria y compila mdL en un paso. Este proceso es diferente de IoAllocateMdl, que solo asigna memoria para MDL, lo que significa que el llamador debe compilar la MDL llamando a MmBuildMdlForNonPagedPool o MmProbeAndLockPages.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Universal |
Versión mínima de UMDF | 2,33 |
Encabezado | ndis/mdlapi.h (include ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |