Compartilhar 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 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.

Importante  

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)

Confira também

ExAllocatePool

IoAllocateMdl

MmBuildMdlForNonPagedPool

MmProbeAndLockPages

NdisAllocateMemoryWithTagPriority

NdisFreeMdl

NdisMAllocateSharedMemory