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

# XMemSetWin32HeapTrackingHooks

> XMemSetWin32HeapTrackingHooks

# XMemSetWin32HeapTrackingHooks

Win32 ヒープのメモリ割り当て、再割り当て、解放のためのトラッキング コールバック関数を設定します。

<a id="syntaxSection" />

## Syntax

```cpp theme={null}
VOID XMemSetWin32HeapTrackingHooks(  
         PHEAP_TRACK_ALLOC_ROUTINE AllocRoutine,  
         PHEAP_TRACK_REALLOC_ROUTINE ReAllocRoutine,  
         PHEAP_TRACK_FREE_ROUTINE FreeRoutine  
)  
```

<a id="parametersSection" />

### Parameters

*AllocRoutine*   \_In\_\
型: [PHEAP\_TRACK\_ALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_alloc_routine)

メモリ割り当てのためのトラッキング コールバック関数へのポインター。

*ReAllocRoutine*   \_In\_\
型: [PHEAP\_TRACK\_REALLOC\_ROUTINE](/reference/system/xmem/functions/pheap_track_realloc_routine)

メモリ再割り当てのためのトラッキング コールバック関数へのポインター。

*FreeRoutine*   \_In\_\
型: [PHEAP\_TRACK\_FREE\_ROUTINE](/reference/system/xmem/functions/pheap_track_free_routine)

メモリ解放のためのトラッキング コールバック関数へのポインター。

<a id="retvalSection" />

### Return value

型: VOID

なし。

<a id="remarksSection" />

## Remarks

この関数を使用すると、これらのヒープ メモリ操作が呼び出されたときに GDK メモリ マネージャーによって呼び出されるコールバック関数を指定することで、Win32 ヒープのメモリ割り当て、再割り当て、および解放を追跡できます。メモリ操作の追跡の詳細については、[診断とメモリ トラッキング](/build/console-features/memory/system-memory-diagnostics) を参照してください。

<Note>CRT は、CRT にリンクされた DLL/EXE の初期化中およびエントリ ポイントで、いくつかのヒープ割り当てを行います。この初期化はこれらのモジュール内のコードを実行するための前提条件であるため、通常、*すべての* ヒープ割り当てが発生する前に XMemSetWin32HeapTrackingHooks を呼び出すことはできません。コールバック コードはこの動作を認識し、それに応じて処理する必要があります。</Note>

この関数を呼び出す前に、次の対応するトラッキング コールバック関数を実装しておく必要があります:

* `HeapAlloc` が呼び出されたときの割り当てを追跡するには、[PHEAP\_TRACK\_ALLOC\_ROUTINE コールバック](/reference/system/xmem/functions/pheap_track_alloc_routine) 関数を実装します。
* `HeapReAlloc` が呼び出されたときの再割り当てを追跡するには、[PHEAP\_TRACK\_REALLOC\_ROUTINE コールバック](/reference/system/xmem/functions/pheap_track_realloc_routine) 関数を実装します。
* `HeapFree` が呼び出されたときの解放を追跡するには、[PHEAP\_TRACK\_FREE\_ROUTINE コールバック](/reference/system/xmem/functions/pheap_track_free_routine) 関数を実装します。

追跡要件に必要なトラッキング コールバック関数のみを実装するだけでかまいません。ヒープ メモリ操作の追跡を停止するには、この関数を呼び出し、追跡を停止する対応するヒープ メモリ操作に `NULL` を指定します。

次の例は、トラッキング コールバック関数を定義した後、`XMemSetWin32HeapTrackingHooks` 関数を使用してこれらのトラッキング コールバック関数へのフックを設定およびクリアします。

```cpp theme={null}
void OnHeapAlloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Alloc %I64d bytes at addr: %p\n",
               hHeap, size, addr);
}

void OnHeapRealloc(HANDLE hHeap, DWORD flags, SIZE_T size, PVOID oldAddr, PVOID newAddr)
{
    DebugPrint("[Heap 0x%p] ReAlloc addr: 0x%p to %I64d bytes (new addr: 0x%p)\n",
               hHeap, oldAddr, size, newAddr);
}

void OnHeapFree(HANDLE hHeap, DWORD flags, PVOID addr)
{
    DebugPrint("[Heap 0x%p] Free addr: 0x%p\n",
               hHeap, addr);
}

// Set Hooks
XMemSetWin32HeapTrackingHooks(OnHeapAlloc, OnHeapReAlloc, OnHeapFree);

// Clear Hooks
XMemSetWin32HeapTrackingHooks(NULL, NULL, NULL);
```

<a id="requirementsSection" />

## Requirements

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

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

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

<a id="seealsoSection" />

## See also

[Memory](/build/console-features/memory/system-memory-overview)\
[XMem](/reference/system/xmem/xmem_members)


## Related topics

- [PHEAP_TRACK_ALLOC_ROUTINE callback](/ja-jp/reference/system/xmem/functions/pheap_track_alloc_routine.md)
- [PHEAP_TRACK_FREE_ROUTINE callback](/ja-jp/reference/system/xmem/functions/pheap_track_free_routine.md)
- [PHEAP_TRACK_REALLOC_ROUTINE callback](/ja-jp/reference/system/xmem/functions/pheap_track_realloc_routine.md)
- [xCurl の概要](/ja-jp/build/console-features/networking/web-requests/intro-xcurl.md)
- [XMemSetOption](/ja-jp/reference/system/xmem/functions/xmemsetoption.md)
