Função AllocateUserPhysicalPagesNuma (memoryapi.h)

Aloca páginas de memória física a serem mapeadas e não mapeadas em qualquer região do AWE ( Address Windowing Extensions ) de um processo especificado e especifica o nó NUMA para a memória física.

Sintaxe

BOOL AllocateUserPhysicalPagesNuma(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray,
  [in]      DWORD      nndPreferred
);

Parâmetros

[in] hProcess

Um identificador para um processo.

A função aloca memória que pode ser mapeada posteriormente dentro do espaço de endereço virtual desse processo. O identificador deve ter o direito de acesso PROCESS_VM_OPERATION . Para obter mais informações, consulte Direitos de acesso e segurança do processo.

[in, out] NumberOfPages

O tamanho da memória física a ser alocada, em páginas.

Para determinar o tamanho da página do computador, use a função GetSystemInfo . Na saída, esse parâmetro recebe o número de páginas realmente alocadas, o que pode ser menor do que o número solicitado.

[out] PageArray

Um ponteiro para uma matriz para armazenar os números de quadro de página da memória alocada.

O tamanho da matriz alocada deve ser pelo menos o NumberOfPages vezes o tamanho do tipo de dados ULONG_PTR .

Cuidado Não tente modificar esse buffer. Ele contém dados do sistema operacional e a corrupção pode ser catastrófica. As informações no buffer não são úteis para um aplicativo.
 

[in] nndPreferred

O nó NUMA no qual a memória física deve residir.

Valor retornado

Se a função for bem-sucedida, o valor retornado será TRUE.

Menos páginas do que as solicitadas podem ser alocadas. O chamador deve marcar o valor do parâmetro NumberOfPages no retorno para ver quantas páginas são alocadas. Todos os números de quadro de página alocados são colocados sequencialmente na memória apontada pelo parâmetro PageArray .

Se a função falhar, o valor retornado será FALSE e nenhum quadro será alocado. Para obter informações de erro estendidas, chame a função GetLastError.

Comentários

A função AllocateUserPhysicalPagesNuma é usada para alocar memória física dentro de um nó NUMA que pode ser mapeado posteriormente dentro do espaço de endereço virtual do processo. O privilégio SeLockMemoryPrivilege deve ser habilitado no token do chamador ou a função falhará com ERROR_PRIVILEGE_NOT_HELD. Para obter mais informações, consulte Constantes de privilégio.

A memória alocada por essa função deve estar fisicamente presente no sistema. Depois que a memória é alocada, ela é bloqueada e indisponível para o restante do sistema de gerenciamento de memória virtual.

As páginas físicas não podem ser mapeadas simultaneamente em mais de um endereço virtual.

As páginas físicas podem residir em qualquer endereço físico. Você não deve fazer suposições sobre a contígua das páginas físicas.

Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0600 ou posterior.

Requisitos

   
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho memoryapi.h (inclua Windows.h, Memoryapi.h)
Biblioteca onecore.lib
DLL Kernel32.dll

Confira também

Extensões de janela de endereço

AllocateUserPhysicalPages

FreeUserPhysicalPages

Funções de gerenciamento da memória

Suporte ao NUMA