Partilhar via


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.

importante  

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)

Consulte também

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory