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 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 *(NonPagedNx), NdisAllocateMemoryWithTagPriorityou NdisMAllocateSharedMemory. Em particular, ele não deve ser usado com memória da pilha, pool de páginas, 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ãopagadas, ele deverá usar as APIs de kernel apropriadas para esse tipo de memória, como IoAllocateMdl combinadas com MmProbeAndLockPages.
[in] Length
O tamanho, em bytes, do buffer de memória.
Valor de retorno
NdisAllocateMdl retorna um ponteiro para o MDL alocado. Se a alocação falhar, o valor retornado será NULL.
Observações
Todos os MDLs alocados chamando NdisAllocateMdl devem ser liberados chamando a função NdisFreeMdl.
NdisAllocateMdl aloca memória e cria 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 |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Universal |
versão mínima do UMDF | 2.33 |
cabeçalho | ndis/mdlapi.h (inclua ndis.h) |
biblioteca | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
regras de conformidade de DDI | Irql_NetBuffer_Function(ndis), NdisAllocateMdl(ndis) |