跳转到主要内容
PlayFab 需要清除存储中的数据时调用的清除存储处理程序。请将其实现为 XAsyncProvider。

语法

参数

context   _In_opt_ void* 你传递给 PFPlatformLocalStorageSetHandlers 的 PFLocalStorageHooks 结构的 context 成员。可以为 nullptr。PlayFab 不拥有此指针。 key   _In_z_ const char* 标识数据。通常为文件路径。清除此键下存储的数据。 async   _Inout_ XAsyncBlock* 清除操作的 XAsyncBlock。

返回值

类型:HRESULT 如果你已在 async 上启动异步操作(例如使用 XAsyncBegin),则返回 S_OK。如果处理程序返回失败 HRESULT,PlayFab 会以该 HRESULT 使存储操作失败,并且不会等待 async 完成,因此只有在尚未在 async 上启动操作时才返回失败。存储操作本身的结果应通过使用 XAsyncComplete 完成 async 来报告。

备注

若要安装此处理程序,请在 PFLocalStorageHooks 结构的 clear 成员中设置它(同时设置另外两个存储处理程序),并在调用 PFInitialize 之前将该结构传递给 PFPlatformLocalStorageSetHandlers。如果三个处理程序中有任何一个为 nullptr,PFPlatformLocalStorageSetHandlers 将返回 E_INVALIDARG。如果未设置自定义处理程序,PlayFab 将使用基于 cstdio 和 std::fstream 对象的默认实现。 使用 XAsyncComplete 完成 async,并传递清除操作的结果和大小为 0 的结果大小。 默认实现会尝试删除以 key 命名的文件,即使删除失败(例如因为文件不存在),也会以 S_OK 完成。在你的处理程序中也请将缺少的键视为成功。 使用 PFTraceEnableTraceToFile 启用将跟踪输出到文件时,PFInitialize 会针对跟踪文件调用此处理程序,并等待操作完成后再继续。在 PFInitialize 等待期间,运行该操作的队列的工作端口必须能够继续推进。如果你手动调度该工作端口,请从另一个线程调度它;仅调度完成端口是不够的。 PlayFab 可能在启动存储操作的线程上以内联方式调用此处理程序,因此不要依赖它在哪个线程上运行。async 的队列是 PlayFab 从 PFLocalStorageHooks 的 queueHandle 成员派生的队列。如果 queueHandle 为 nullptr,PlayFab 会从你传递给 PFInitialize 的后台队列派生该队列;如果该队列也为 nullptr,则从进程任务队列派生。派生队列的工作回调和完成回调都在其来源队列的工作端口上运行。 PlayFab 一次只运行一个存储操作,并且只有在当前操作完成后才会启动下一个操作。 PlayFab 可以通过对 async 调用 XAsyncCancel 来取消挂起的操作。如果你的存储操作可以取消,请在提供程序中处理 XAsyncOp::Cancel。 key 和 async 参数由 PlayFab 拥有,并在操作完成之前保持有效。context 参数不在此保证范围内。

要求

头文件: PFPlatform.h 库: PlayFabCore.lib 支持的平台: Windows、XBOX One 系列主机和 XBOX Series 主机

另请参阅

PFPlatform 成员 PFLocalStorageHooks PFPlatformLocalStorageSetHandlers XAsyncProvider PFPlatformLocalStorageReadAsyncHandler PFPlatformLocalStorageWriteAsyncHandler
最后修改于 2026年11月5日