Pular para o conteúdo principal
Manipulador de gravação no armazenamento que o PlayFab chama quando precisa gravar dados no armazenamento. Implemente-o como um XAsyncProvider.

Sintaxe

Parâmetros

context   _In_opt_ void* O membro context da estrutura PFLocalStorageHooks que você passou para PFPlatformLocalStorageSetHandlers. Pode ser nullptr. O PlayFab não é proprietário desse ponteiro. key   _In_z_ const char* Identifica os dados. Normalmente, um caminho de arquivo. Grave os dados nessa chave. dataSize   _In_ size_t O tamanho, em bytes, de data. data   _In_reads_bytes_(dataSize) void const* Os dados a serem gravados. async   _Inout_ XAsyncBlock* O XAsyncBlock da operação de gravação.

Valor de retorno

Tipo: HRESULT Retorne S_OK se você tiver iniciado a operação assíncrona em async, por exemplo, com XAsyncBegin. Se o manipulador retornar um HRESULT de falha, o PlayFab fará a operação de armazenamento falhar com esse HRESULT e não aguardará a conclusão de async; portanto, retorne uma falha somente quando você não tiver iniciado uma operação em async. Informe o resultado da própria operação de armazenamento concluindo async com XAsyncComplete.

Comentários

Para instalar esse manipulador, defina-o no membro write de uma estrutura PFLocalStorageHooks, junto com os outros dois manipuladores de armazenamento, e passe a estrutura para PFPlatformLocalStorageSetHandlers antes de chamar PFInitialize. PFPlatformLocalStorageSetHandlers retorna E_INVALIDARG se qualquer um dos três manipuladores for nullptr. Se você não definir manipuladores personalizados, o PlayFab usará uma implementação padrão baseada em cstdio e em objetos std::fstream. Conclua async com XAsyncComplete, passando o resultado da gravação e um tamanho de resultado igual a 0. A implementação padrão acrescenta data aos dados existentes de key; ela não os substitui. O PlayFab depende desse comportamento: quando a saída de rastreamento para um arquivo está habilitada com PFTraceEnableTraceToFile, o PlayFab limpa o arquivo de rastreamento uma vez e, em seguida, grava cada mensagem de rastreamento como uma gravação separada na mesma chave. Acrescente os dados também no seu manipulador; caso contrário, o arquivo de rastreamento manterá apenas a última mensagem. data permanece válido até que a operação seja concluída. Copie-o se precisar dele depois disso. O PlayFab pode chamar esse manipulador de forma embutida no thread que inicia a operação de armazenamento, portanto, não dependa do thread em que ele é executado. A fila de async é uma fila que o PlayFab deriva do membro queueHandle de PFLocalStorageHooks. Se queueHandle for nullptr, o PlayFab a deriva da fila em segundo plano que você passou para PFInitialize ou da fila de tarefas do processo, se essa fila também for nullptr. Os retornos de chamada de trabalho e de conclusão da fila derivada são executados na porta de trabalho da fila da qual ela é derivada. O PlayFab executa uma operação de armazenamento por vez e só inicia a próxima depois que a atual é concluída. O PlayFab pode cancelar uma operação pendente chamando XAsyncCancel em async. Trate XAsyncOp::Cancel no seu provedor se a sua operação de armazenamento puder ser cancelada. Os argumentos key e async pertencem ao PlayFab e permanecem válidos até que a operação seja concluída. O argumento context não é coberto por essa garantia.

Requisitos

Cabeçalho: PFPlatform.h Biblioteca: PlayFabCore.lib Plataformas compatíveis: Windows, consoles da família XBOX One e consoles XBOX Series

Confira também

Membros de PFPlatform PFLocalStorageHooks PFPlatformLocalStorageSetHandlers XAsyncProvider PFPlatformLocalStorageReadAsyncHandler PFPlatformLocalStorageClearAsyncHandler
Última modificação em 5 de novembro de 2026