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

# PFMemAllocFunction

> タイトルが PFMemSetFunctions でカスタム メモリ フックをインストールした後、指定されたサイズのメモリ バッファーを割り当てるために PlayFab が呼び出すコールバック。

PlayFab がメモリ バッファーを動的に割り当てる必要があるたびに呼び出すコールバック。

## 構文

```cpp theme={null}
void* STDAPIVCALLTYPE PFMemAllocFunction(
    size_t size,
    uint32_t memoryTypeId
);
```

### パラメーター

**`size`**   `_In_` size\_t

割り当てるサイズ (バイト単位)。この値が 0 になることはありません。

**`memoryTypeId`**   `_In_` uint32\_t

割り当てられるメモリの内部カテゴリを表す不透明な識別子。この値は無視してください。

### 戻り値

型: void\*

指定されたサイズの割り当て済みメモリ ブロックへのポインター。割り当てに失敗した場合は `nullptr`。ヘッダーでは、戻り値に `_Ret_maybenull_` と `_Post_writable_byte_size_(size)` の注釈が付けられています。

## 解説

このコールバックをインストールするには、[PFMemoryHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md) 構造体の `alloc` メンバーに設定し、[PFInitialize](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfcore/functions/pfinitialize.md) を呼び出す前に、その構造体を [PFMemSetFunctions](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfmemsetfunctions.md) に渡します。同時に、`free` メンバーには対応する [PFMemFreeFunction](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md) コールバックを設定します。2 つのメンバーのうち一方だけが設定されている場合、PFMemSetFunctions は `E_INVALIDARG` を返します。

コールバックは、要求されたサイズの連続したメモリ ブロックへのポインターを返す必要があります。このブロックは、PlayFab がそれを PFMemFreeFunction コールバックに渡すまで有効である必要があります。PlayFab は、このコールバックが返した null 以外のすべてのポインターを、メモリが不要になった時点で PFMemFreeFunction コールバックに渡します。

PFMemSetFunctions を呼び出した時点で libHttpClient がまだ初期化されていない場合、PlayFab は libHttpClient の割り当てもこのコールバック経由でルーティングするフックをインストールします。

既定のフックを含め、現在使用中のフックを取得するには、[PFMemGetFunctions](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfmemgetfunctions.md) を呼び出します。

PlayFab はこのコールバックを異なるスレッドから呼び出す可能性があるため、スレッド セーフにしてください。

## 要件

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

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

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

## 関連項目

[PFPlatform のメンバー](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/pfplatform_members.md)

[PFMemoryHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md)

[PFMemFreeFunction](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md)


## Related topics

- [PFMemFreeFunction](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md)
- [PFMemoryHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md)
- [サービス C API の概要 - PFPlatform.h](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/pfplatform_members.md)
- [HCMemAllocFunction](https://docs.xbox.com/ja-jp/reference/live/httpclient/httpclient/functions/hcmemallocfunction.md)
- [XblMemAllocFunction](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/xbox_live_global_c/functions/xblmemallocfunction.md)
