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

# XMEM_SET_ALLOCATION_HOOKS

> XMEM_SET_ALLOCATION_HOOKS

# XMEM\_SET\_ALLOCATION\_HOOKS

供遊戲用來註冊記憶體配置攔截。

## 語法

```cpp theme={null}
#define XMEM_SET_ALLOCATION_HOOKS(AllocRoutine, FreeRoutine) \
    __declspec(dllexport) XMEM_ALLOCATION_HOOKS __XMemAllocationHooks__ = { AllocRoutine, FreeRoutine };
```

### 參數

*AllocRoutine*   *In*

類型：PXMEMALLOC\_ROUTINE

遊戲配置函式的指標。如需此函式的定義，請參閱 [XMEMALLOC\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine) 主題。

*FreeRoutine*   *In*\
類型：PXMEMFREE\_ROUTINE

遊戲解除配置函式的指標。如需此函式的定義，請參閱 [XMEMFREE\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine) 主題。

## 備註

可以透過 **XMEM\_SET\_ALLOCATION\_HOOKS** 巨集，使用遊戲提供的回呼來監視 (或覆寫) 配置。正確使用此巨集，遊戲便可追蹤從遊戲程式碼及平台程式碼所進行的每項配置。

如果遊戲選擇不提供自己的配置攔截，則會改用 **XMemAllocDefault** 和 **XMemFreeDefault** (如需這些攔截的宣告，請參閱 xmem.h)。如果遊戲想要為了追蹤而提供配置攔截，但不想實作自己的配置器，可以直接呼叫預設配置器。

如果您攔截了 [XMEMALLOC\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine) 和 [XMEMFREE\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemfree_routine)，務必為兩者都提供實作；只攔截其中一個會被視為錯誤。

遊戲提供的攔截會從遊戲可執行檔匯出，並在 xmem.dll 載入時 (通常是遊戲啟動時) 繫結。

<Note>由 XMemSetAllocationHooks 註冊的函式必須定義在遊戲 exe 內，以確保位址是以靜態方式填入。如果提供的函式指標參考的是遊戲 exe 所參考之 DLL 中的函式，編譯器就必須發出靜態初始設定式程式碼來填入記憶體，而該程式碼可能會在平台查詢覆寫攔截之後才執行，導致無法預期的行為。如果平台偵測到可能發生這種情況，偵錯工具輸出視窗中會出現警告。</Note>

## 需求

**標頭：** xmem.h

**支援的平台：** XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[XMem 參考](/zh-TW/reference/system/xmem/xmem_members)\
[XMEM\_ALLOCATION\_HOOKS](/zh-TW/reference/system/xmem/structs/xmem_allocation_hooks)\
[XMEMALLOC\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine)\
[XMEMFREE\_ROUTINE](/zh-TW/reference/system/xmem/functions/xmemalloc_routine)


## Related topics

- [XMEM_ALLOCATION_HOOKS](/reference/system/xmem/structs/xmem_allocation_hooks.md)
- [XMemFreeDefault](/reference/system/xmem/functions/xmemfreedefault.md)
