Função MapUserPhysicalPagesScatter (winbase.h)

Mapeia páginas de memória física alocadas anteriormente em um endereço especificado em uma região do AWE ( Extensões de Janela de Endereço ).

Windows de 64 bits em sistemas baseados em Itanium: Devido à diferença de tamanhos de página, não há suporte para MapUserPhysicalPagesScatter para aplicativos de 32 bits.

Sintaxe

BOOL MapUserPhysicalPagesScatter(
  [in] PVOID      *VirtualAddresses,
  [in] ULONG_PTR  NumberOfPages,
  [in] PULONG_PTR PageArray
);

Parâmetros

[in] VirtualAddresses

Um ponteiro para uma matriz de endereços iniciais das regiões de memória a serem remapeadas.

Cada entrada em VirtualAddresses deve estar dentro do intervalo de endereços que a função VirtualAlloc retorna quando a região AWE ( Extensões de Janela de Endereço ) é alocada. O valor em NumberOfPages indica o tamanho da matriz. As entradas podem ser de várias regiões do AWE (Extensões de Janela de Endereço).

[in] NumberOfPages

O tamanho da memória física e do espaço de endereço virtual para o qual estabelecer traduções, em páginas.

A matriz em VirtualAddresses especifica o intervalo de endereços virtuais.

[in] PageArray

Um ponteiro para uma matriz de valores que indica como cada página correspondente em VirtualAddresses deve ser tratada.

Um 0 (zero) indica que a entrada correspondente em VirtualAddresses deve ser não mapeada e qualquer valor diferente de zero que tenha deve ser mapeado.

Se esse parâmetro for NULL, todos os endereços na matriz VirtualAddresses serão não mapeados.

O valor em NumberOfPages indica o tamanho da matriz.

Retornar valor

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

Se a função falhar, o valor retornado será FALSE e a função não mapeará ou cancelará o mapa— parcial ou não. Para obter informações de erro estendidas, chame GetLastError.

Comentários

As páginas físicas podem ser não mapeadas, mas não são liberadas. Você deve chamar FreeUserPhysicalPages para liberar as páginas físicas.

Você pode especificar qualquer número de páginas de memória física, mas a memória não pode se estender fora do espaço de endereço virtual alocado por VirtualAlloc. Todos os mapas de endereço existentes são substituídos automaticamente com as novas traduções e as traduções antigas não são mapeadas.

Não é possível mapear páginas de memória física fora do intervalo especificado em AllocateUserPhysicalPages. Você pode mapear várias regiões simultaneamente, mas elas não podem se sobrepor.

As páginas físicas podem ser localizadas em qualquer endereço físico, mas não fazem suposições sobre a contígua das páginas físicas.

Em um ambiente multiprocessador, essa função mantém a coerência do buffer de tradução de hardware. Ao retornar dessa função, todos os threads em todos os processadores têm a garantia de ver o mapeamento correto.

Para compilar um aplicativo que usa essa função, defina a macro _WIN32_WINNT como 0x0500 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winbase.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Extensões de janela de endereço

AllocateUserPhysicalPages

FreeUserPhysicalPages

MapUserPhysicalPages

Funções de gerenciamento da memória