Compartilhar via


NdisAllocateMemory

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função aloca residente sistema-espaço memória. A memória pode ser alocada em um limite especificado endereço e, se necessário, pode ser uncached assim.

Syntax

NDIS_STATUS NdisAllocateMemory(
  PVOID* VirtualAddress,
  UINT Length,
  UINT MemoryFlags,
  NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress
);

Parameters

  • VirtualAddress
    [out] Ponteiro para uma variável Caller-supplied no qual essa função retorna o endereço virtual de base da memória alocada ou NULL se memória do tipo especificado é não disponível.
  • Comprimento
    [no] Especifica o tamanho, em bytes, a ser alocada.
  • MemoryFlags
    [no] Especifica um máscara de bits designar os tipos de memória para alocar ou 0. A seguinte tabela mostra válido valores do sinalizador de memória.

    Valor Descrição

    0

    Alocar sistema-espaço memória.

    NDIS_MEMORY_CONTIGUOUS

    Não suportado. Usando este irá sinalizador causar NdisAllocateMemory Para retornar NDIS_STATUS_FAILURE. Este sinalizador é ignorado pelo NdisAllocateMemory No Windows CE 3.0 e versões anteriores.

    NDIS_MEMORY_NONCACHED

    Alocar memória noncached.

  • HighestAcceptableAddress
    [no] Especifica – 1.

Return Value

NDIS_STATUS_SUCCESS indica que o chamador pode usar o intervalo memória alocada começando o valor retornado na VirtualAddress parâmetro. NDIS_STATUS_FAILURE indica que a tentativa de alocar a memória solicitada falha. Isso faz não necessariamente significar que um chamar subseqüente falhará.

Remarks

Se o sinalizador NDIS_MEMORY_NONCACHED for especificada, Windows Embedded CE NDIS usará o O VirtualAlloc função para alocar a memória; caso contrário, ele usa o LocalAlloc função.

Qualquer driver NDIS pode chamar essa função com o MemoryFlags Defina como 0. De exemplo, drivers NDIS que exportar um conjunto de funções UPPER-edge (miniporta) NDIS pode chamar esta função para alocar uma área contexto no qual o driver mantém por-NIC ou por - Virtual - executar NIC-informações do estado tempo e transmitir o ponteiro retornado no VirtualAddress para o registro ou alerta NdisMSetAttributes ou o NdisMSetAttributesEx função. Drivers NDIS que exportar um conjunto de funções lower-edge (protocolo) NDIS também pode chamar essa função sempre que tal um driver precisa alocar espaço do buffer.

Somente conjunto miniportas NIC o MemoryFlags Com um ou ambos os sinalizadores line quando tornarem inicialização-chamadas tempo para essa função. Durante inicialização, os drivers de miniporta alocar esses tipos de memória a ser compartilhada com suas placas de rede.

Se tal uma miniporta especifica fisicamente contíguo memória em um chamar para esta função, alocação de memória virtual mapeia para um único fisicamente contíguo região. Se uma miniporta especifica memória noncached, o intervalo virtual alocado não é armazenado em cache. Um driver NIC pode acessar memória noncached sem liberar armazenar em cache buffers durante operações acesso direto à memória (DMA).

Seja qual for o valor da entrada MemoryFlags, um bem-sucedido chamador para essa função usa um intervalo de endereços virtuais para acessar a memória alocada. Depending on o tamanho da alocação e o tipo de memória solicitada, físico um ou mais intervalos memória (Páginas) voltar esse único intervalo virtual.

Um driver NIC deve nunca solicitação mais memória noncached que ele precisa.

Se uma inicialização-tempo chamar falhar, um driver NIC pode tentar alocar menor um ou mais blocos de memória noncached, em vez Falha ao inicializar se ele não é possível alocar um bloco grande.

Requirements

Header ndis.h
Library ndis.lib
Windows Embedded CE Windows CE .NET 4.0 and later

See Also

Reference

NdisFreeMemory
NdisMSetAttributes
NdisMSetAttributesEx

Other Resources

LocalAlloc
VirtualAlloc