> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XMemVirtualQuery

> XMemVirtualQuery

# XMemVirtualQuery

Recupera informações sobre um intervalo de páginas no espaço de endereço virtual do processo de chamada.

## Sintaxe

```cpp theme={null}
BOOL XMemVirtualQuery(  
         HANDLE Process,  
         PVOID Address,  
         PXMEM_BASIC_INFORMATION Buffer  
)  
```

### Parâmetros

*Process*   \_In\_\
Tipo: HANDLE

Um identificador de processo, normalmente obtido chamando [GetCurrentProcess](https://learn.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess).

*Address*   \_In\_opt\_\
Tipo: PVOID

Um ponteiro para o endereço base da região de páginas a ser consultada. Esse valor é arredondado para baixo até o próximo limite de página. Se esse parâmetro for definido como um endereço acima do endereço de memória mais alto acessível ao processo, a função falhará com um código de erro definido como **ERROR\_INVALID\_PARAMETER**.

*Buffer*   \_Out\_\
Tipo: PXMEM\_BASIC\_INFORMATION

Um ponteiro para uma estrutura [XMEM\_BASIC\_INFORMATION](https://docs.xbox.com/pt-BR/reference/system/xmem/structs/xmem_basic_information.md) na qual as informações sobre o intervalo de páginas especificado são retornadas.

### Valor retornado

Tipo: BOOL

Retorna `TRUE` se tiver êxito; caso contrário, `FALSE`. Para obter informações de erro estendidas, chame [GetLastError](https://msdn.microsoft.com/library/windows/desktop/ms679360\(v=vs.85\).aspx).

## Comentários

As ferramentas podem passar o identificador para um processo remoto, para consultar o título de fora do processo atual.

Se a região de memória consultada tiver uma marca opcional de código de quatro caracteres associada, a marca será incluída no campo `TagFourCC` e codificada como uma representação de 24 bits no campo `TagCode` da estrutura `XMEM_BASIC_INFORMATION` retornada em `Buffer`. Caso contrário, o campo `TagFourCC` será preenchido com valores NULL e o campo `TagCode` deverá ser ignorado. Para obter mais informações sobre marcas, consulte [XMemVirtualAlloc](https://docs.xbox.com/pt-BR/reference/system/xmem/functions/xmemvirtualalloc.md).

Exemplo: para calcular o uso total da memória alocada por uma chamada direta para 'XMemVirtualAlloc', é necessária uma combinação de 'XMemSetOption' e 'XMemVirtualQuery'.

```cpp theme={null}
// To enable commit tracking
XMEM_OPTION option;
option.Option = eXMEMOPT_XMEMALLOCDEFAULT_TAG_VIRTUALALLOC;
option.u.Bool = TRUE;
XMemSetOption(option);

// To query the total commit
SIZE_T address = 0;
SIZE_T commitSize = 0;
XMEM_BASIC_INFORMATION info; = {};
while (XMemVirtualQuery(GetCurrentProcess(), (PVOID)address, &info))
{
        if ((info.State & MEM_COMMIT) &&
                (*(PDWORD)(info.TagFourCC) == *(PDWORD)("XmVA"))) {

                commitSize += info.RegionSize;
        }

        address += info.RegionSize;
}
```

## Requisitos

**Cabeçalho:** xmem.h

**Biblioteca:** xmem.lib

**Plataformas compatíveis:** consoles da família XBOX One e consoles XBOX Series

## Confira também

[XMEM\_BASIC\_INFORMATION](https://docs.xbox.com/pt-BR/reference/system/xmem/structs/xmem_basic_information.md)\
[XMem](https://docs.xbox.com/pt-BR/reference/system/xmem/xmem_members.md)


## Related topics

- [Trabalhar com o gerenciador de memória do Microsoft GDK Game OS](https://docs.xbox.com/pt-BR/build/console-features/memory/system-memory-working.md)
- [XMemMakeTag](https://docs.xbox.com/pt-BR/reference/system/xmem/functions/xmemmaketag.md)
- [XMemMapPhysicalPages](https://docs.xbox.com/pt-BR/reference/system/xmem/functions/xmemmapphysicalpages.md)
- [PFVirtualCurrencyRechargeTime](https://docs.xbox.com/pt-BR/services/playfab/api-references/c/pftypes/structs/pfvirtualcurrencyrechargetime.md)
- [XMemMapPhysicalPagesScatter](https://docs.xbox.com/pt-BR/reference/system/xmem/functions/xmemmapphysicalpagesscatter.md)
