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 el MDL va a describir.

Importante  

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 al MDL asignado. Si se produce un error en la asignación, el valor devuelto es NULL.

Comentarios

Todas las MDL asignadas 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 el MDL llamando a MmBuildMdlForNonPagedPool o MmProbeAndLockPages.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Universal
Encabezado ndis/mdlapi.h (include ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis)

Consulte también

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory