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

# XMemVirtualQuery

> XMemVirtualQuery

# XMemVirtualQuery

呼び出し元プロセスの仮想アドレス空間内のページ範囲に関する情報を取得します。

<a id="syntaxSection" />

## Syntax

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

<a id="parametersSection" />

### Parameters

*Process*   \_In\_\
型: HANDLE

プロセス ハンドル。通常は [GetCurrentProcess](https://learn.microsoft.com/windows/desktop/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess) を呼び出して取得します。

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

クエリを行うページ リージョンのベース アドレスへのポインター。この値は次のページ境界に切り下げられます。このパラメーターがプロセスからアクセス可能な最も高いメモリ アドレスを超えるアドレスに設定されている場合、関数は失敗し、エラー コードが **ERROR\_INVALID\_PARAMETER** に設定されます。

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

指定されたページ範囲に関する情報が返される [XMEM\_BASIC\_INFORMATION](/reference/system/xmem/structs/xmem_basic_information) 構造体へのポインター。

<a id="retvalSection" />

### Return value

型: BOOL

成功した場合は `TRUE` を返します。それ以外の場合は `FALSE` を返します。拡張エラー情報を取得するには、[GetLastError](https://msdn.microsoft.com/library/windows/desktop/ms679360\(v=vs.85\).aspx) を呼び出します。

<a id="remarksSection" />

## Remarks

ツールはハンドルをリモート プロセスに渡して、現在のプロセスの外部からタイトルにクエリを行うことができます。

クエリされたメモリ リージョンにオプションの 4 文字コード タグが関連付けられている場合、タグは `Buffer` に返される `XMEM_BASIC_INFORMATION` 構造体の `TagFourCC` フィールドに含まれ、`TagCode` フィールドに 24 ビット表現でエンコードされます。それ以外の場合、`TagFourCC` フィールドは NULL 値で埋められ、`TagCode` フィールドは無視する必要があります。タグの詳細については、[XMemVirtualAlloc](/reference/system/xmem/functions/xmemvirtualalloc) を参照してください。

例: 'XMemVirtualAlloc' への直接呼び出しによって割り当てられるメモリの総メモリ使用量を計算するには、'XMemSetOption' と '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;
}
```

<a id="requirementsSection" />

## Requirements

**ヘッダー:** xmem.h

**ライブラリ:** xmem.lib

**サポートされているプラットフォーム:** XBOX One ファミリー本体および XBOX Series 本体

<a id="seealsoSection" />

## See also

[XMEM\_BASIC\_INFORMATION](/reference/system/xmem/structs/xmem_basic_information)\
[XMem](/reference/system/xmem/xmem_members)


## Related topics

- [Microsoft GDK ゲーム OS メモリ マネージャーの使用](/ja-jp/build/console-features/memory/system-memory-working.md)
- [XMemMakeTag](/ja-jp/reference/system/xmem/functions/xmemmaketag.md)
- [XMemMapPhysicalPages](/ja-jp/reference/system/xmem/functions/xmemmapphysicalpages.md)
- [XMemMapPhysicalPagesScatter](/ja-jp/reference/system/xmem/functions/xmemmapphysicalpagesscatter.md)
- [MicrosoftGame.config 要素 - XboxAnacondaTitleMemory](/ja-jp/reference/system/microsoftgameconfig/elements/microsoftgameconfig-element-xboxanacondatitlememory.md)
