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

# PFPlatformLocalStorageClearAsyncHandler

> キーの下に格納されたデータを削除するために PlayFab が呼び出すストレージ ハンドラー。結果ペイロードなしで完了する XAsync 操作を開始します。

PlayFab がストレージからデータをクリアする必要があるときに呼び出す、ストレージ クリア ハンドラー。[XAsyncProvider](https://docs.xbox.com/ja-jp/reference/system/xasyncprovider/functions/xasyncprovider.md) として実装します。

## 構文

```cpp theme={null}
HRESULT STDAPIVCALLTYPE PFPlatformLocalStorageClearAsyncHandler(
    void* context,
    const char* key,
    XAsyncBlock* async
);
```

### パラメーター

**`context`**   `_In_opt_` void\*

[PFPlatformLocalStorageSetHandlers](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragesethandlers.md) に渡した [PFLocalStorageHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md) 構造体の `context` メンバー。`nullptr` にすることができます。PlayFab はこのポインターを所有しません。

**`key`**   `_In_z_` const char\*

データを識別します。通常はファイル パスです。このキーの下に格納されたデータをクリアします。

**`async`**   `_Inout_` [XAsyncBlock](https://docs.xbox.com/ja-jp/reference/system/xasync/structs/xasyncblock.md)\*

クリア操作の `XAsyncBlock`。

### 戻り値

型: HRESULT

`async` で非同期操作を開始した場合 (たとえば [XAsyncBegin](https://docs.xbox.com/ja-jp/reference/system/xasyncprovider/functions/xasyncbegin.md) を使用して) は、`S_OK` を返します。ハンドラーがエラーの HRESULT を返すと、PlayFab はその HRESULT でストレージ操作を失敗させ、`async` の完了を待機しません。そのため、エラーを返すのは `async` で操作を開始していない場合だけにしてください。ストレージ操作自体の結果は、[XAsyncComplete](https://docs.xbox.com/ja-jp/reference/system/xasyncprovider/functions/xasynccomplete.md) で `async` を完了することで報告します。

## 解説

このハンドラーをインストールするには、他の 2 つのストレージ ハンドラーと共に [PFLocalStorageHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md) 構造体の `clear` メンバーに設定し、[PFInitialize](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfcore/functions/pfinitialize.md) を呼び出す前に、その構造体を [PFPlatformLocalStorageSetHandlers](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragesethandlers.md) に渡します。3 つのハンドラーのいずれかが `nullptr` の場合、PFPlatformLocalStorageSetHandlers は `E_INVALIDARG` を返します。カスタム ハンドラーを設定しない場合、PlayFab は cstdio および `std::fstream` オブジェクトに基づく既定の実装を使用します。

クリアの結果と結果サイズ 0 を渡して、[XAsyncComplete](https://docs.xbox.com/ja-jp/reference/system/xasyncprovider/functions/xasynccomplete.md) で `async` を完了します。

既定の実装は `key` で指定されたファイルの削除を試み、削除に失敗した場合 (たとえばファイルが存在しない場合) でも `S_OK` で完了します。ハンドラーでも、キーが存在しない場合は成功として扱ってください。

[PFTraceEnableTraceToFile](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pftrace/functions/pftraceenabletracetofile.md) でファイルへのトレース出力が有効になっている場合、[PFInitialize](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfcore/functions/pfinitialize.md) はトレース ファイルに対してこのハンドラーを呼び出し、操作が完了するまで待機してから処理を続行します。PFInitialize が待機している間も、操作が実行されるキューのワーク ポートは処理を進められる必要があります。そのワーク ポートを手動でディスパッチする場合は、別のスレッドからディスパッチしてください。完了ポートだけをディスパッチしても十分ではありません。

PlayFab は、ストレージ操作を開始したスレッド上でこのハンドラーをインラインで呼び出す場合があるため、どのスレッドで実行されるかに依存しないでください。`async` のキューは、PlayFab が PFLocalStorageHooks の `queueHandle` メンバーから派生させたキューです。`queueHandle` が `nullptr` の場合、PlayFab は PFInitialize に渡したバックグラウンド キューから、またはそのキューも `nullptr` だった場合はプロセス タスク キューから、キューを派生させます。派生したキューのワーク コールバックと完了コールバックは、どちらも派生元のキューのワーク ポートで実行されます。

PlayFab はストレージ操作を一度に 1 つずつ実行し、現在の操作が完了した後でのみ次の操作を開始します。

PlayFab は、`async` で `XAsyncCancel` を呼び出すことで、保留中の操作をキャンセルできます。ストレージ操作をキャンセルできる場合は、プロバイダーで `XAsyncOp::Cancel` を処理してください。

`key` 引数と `async` 引数は PlayFab が所有し、操作が完了するまで有効です。`context` 引数はこの保証の対象外です。

## 要件

**ヘッダー:** 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)

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

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

[XAsyncProvider](https://docs.xbox.com/ja-jp/reference/system/xasyncprovider/functions/xasyncprovider.md)

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

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


## Related topics

- [PFPlatformLocalStorageWriteAsyncHandler](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragewriteasynchandler.md)
- [PFPlatformLocalStorageReadAsyncHandler](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragereadasynchandler.md)
- [PFLocalStorageHooks](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md)
- [サービス C API の概要 - PFPlatform.h](https://docs.xbox.com/ja-jp/services/playfab/api-references/c/pfplatform/pfplatform_members.md)
- [XblLocalStorageClearHandler](https://docs.xbox.com/ja-jp/reference/live/xsapi-c/platform_c/functions/xbllocalstorageclearhandler.md)
