Função NdisAllocateMdl (ndis/mdlapi.h)
A função NdisAllocateMdl aloca um MDL que descreve o buffer de memória no endereço virtual especificado.
Sintaxe
NDIS_EXPORTED_ROUTINE MDL * NdisAllocateMdl(
[in] NDIS_HANDLE NdisHandle,
[in] PVOID VirtualAddress,
[in] ULONG Length
);
Parâmetros
[in] NdisHandle
Um identificador NDIS que foi obtido durante a inicialização do chamador. Para obter mais informações, consulte Obtendo identificadores de pool.
[in] VirtualAddress
Um ponteiro para o endereço virtual base do buffer que o MDL deve descrever.
O parâmetro VirtualAddress para NdisAllocateMdl aceita apenas memória do pool nãopagado. Em outras palavras, ele requer memória de ExAllocatePool*(NonPagedNx), NdisAllocateMemoryWithTagPriority ou NdisMAllocateSharedMemory. Em particular, ele não deve ser usado com memória da pilha, pool paginado, dados globais do driver ou outras regiões de memória.
Se um driver precisar criar um MDL para uma dessas regiões de pool nãopaged, ele deverá usar as APIs de kernel apropriadas para esse tipo de memória, como IoAllocateMdl combinado com MmProbeAndLockPages.
[in] Length
O tamanho, em bytes, do buffer de memória.
Retornar valor
NdisAllocateMdl retorna um ponteiro para o MDL alocado. Se a alocação falhar, o valor retornado será NULL.
Comentários
Todos os MDLs alocados chamando NdisAllocateMdl devem ser liberados chamando a função NdisFreeMdl .
NdisAllocateMdl aloca memória e compila o MDL em uma etapa. Esse processo é diferente de IoAllocateMdl, que aloca apenas memória para o MDL, o que significa que o chamador deve criar o MDL chamando MmBuildMdlForNonPagedPool ou MmProbeAndLockPages.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Plataforma de Destino | Universal |
Versão mínima do UMDF | 2.33 |
Cabeçalho | ndis/mdlapi.h (include ndis.h) |
Biblioteca | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |