Share via


Função AllocateUserPhysicalPages2 (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, com parâmetros estendidos.

Sintaxe

BOOL AllocateUserPhysicalPages2(
  [in]     HANDLE                  ObjectHandle,
  [in,out] PULONG_PTR              NumberOfPages,
  [out]    PULONG_PTR              PageArray,
  [in,out] PMEM_EXTENDED_PARAMETER ExtendedParameters,
  [in]     ULONG                   ExtendedParameterCount
);

Parâmetros

[in] ObjectHandle

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 .

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,out] ExtendedParameters

Ponteiro para uma matriz de estruturas MEM_EXTENDED_PARAMETER .

[in] ExtendedParameterCount

O número de MEM_EXTENDED_PARAMETER na matriz ExtendedParameters .

Retornar valor

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

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

Comentários

AllocateUserPhysicalPages2 é o mesmo que AllocateUserPhysicalPages , mas adiciona os parâmetros ExtendedParameters e ExtendedParameterCount .

A função AllocateUserPhysicalPages2 é usada para alocar memória física que posteriormente pode ser mapeada 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.

Requisitos

   
Cliente mínimo com suporte Windows 11, Build 20348
Servidor mínimo com suporte Windows Server, Build 20348
Cabeçalho memoryapi.h
Biblioteca onecore.lib
DLL kernelbase.dll

Confira também

AllocateUserPhysicalPages

Extensões de janela de endereço

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

Funções de gerenciamento da memória