Syntaxe
Paramètres
context _In_opt_ void*
Le membre context de la structure PFLocalStorageHooks que vous avez transmise à PFPlatformLocalStorageSetHandlers. Peut être nullptr. PlayFab n’est pas propriétaire de ce pointeur.
key _In_z_ const char*
Identifie les données. Il s’agit généralement d’un chemin de fichier. Écrivez les données sous cette clé.
dataSize _In_ size_t
La taille, en octets, de data.
data _In_reads_bytes_(dataSize) void const*
Les données à écrire.
async _Inout_ XAsyncBlock*
Le XAsyncBlock de l’opération d’écriture.
Valeur de retour
Type : HRESULT RetournezS_OK si vous avez démarré l’opération asynchrone sur async, par exemple avec XAsyncBegin. Si le gestionnaire retourne un HRESULT d’échec, PlayFab fait échouer l’opération de stockage avec ce HRESULT et n’attend pas la fin de async; ne retournez donc un échec que si vous n’avez pas démarré d’opération sur async. Signalez le résultat de l’opération de stockage elle-même en terminant async avec XAsyncComplete.
Notes
Pour installer ce gestionnaire, définissez-le dans le membrewrite d’une structure PFLocalStorageHooks, avec les deux autres gestionnaires de stockage, et transmettez la structure à PFPlatformLocalStorageSetHandlers avant d’appeler PFInitialize. PFPlatformLocalStorageSetHandlers retourne E_INVALIDARG si l’un des trois gestionnaires est nullptr. Si vous ne définissez pas de gestionnaires personnalisés, PlayFab utilise une implémentation par défaut basée sur cstdio et des objets std::fstream.
Terminez async avec XAsyncComplete en transmettant le résultat de l’écriture et une taille de résultat de 0.
L’implémentation par défaut ajoute data aux données existantes de key; elle ne les remplace pas. PlayFab dépend de ce comportement : lorsque la sortie de trace dans un fichier est activée avec PFTraceEnableTraceToFile, PlayFab efface le fichier de trace une seule fois, puis écrit chaque message de trace au moyen d’une écriture distincte sous la même clé. Ajoutez également les données dans votre gestionnaire, sinon le fichier de trace ne conserve que le dernier message.
data reste valide jusqu’à la fin de l’opération. Copiez-le si vous en avez besoin par la suite.
PlayFab peut appeler ce gestionnaire en ligne sur le thread qui démarre l’opération de stockage; ne dépendez donc pas du thread sur lequel il s’exécute. La file d’attente de async est une file d’attente que PlayFab dérive du membre queueHandle de PFLocalStorageHooks. Si queueHandle est nullptr, PlayFab la dérive de la file d’attente en arrière-plan que vous avez transmise à PFInitialize, ou de la file d’attente de tâches du processus si cette file d’attente était également nullptr. Les rappels de travail et d’achèvement de la file d’attente dérivée s’exécutent tous deux sur le port de travail de la file d’attente dont elle est dérivée.
PlayFab exécute une seule opération de stockage à la fois et ne démarre la suivante qu’une fois l’opération en cours terminée.
PlayFab peut annuler une opération en attente en appelant XAsyncCancel sur async. Gérez XAsyncOp::Cancel dans votre fournisseur si votre opération de stockage peut être annulée.
Les arguments key et async appartiennent à PlayFab et restent valides jusqu’à la fin de l’opération. L’argument context n’est pas couvert par cette garantie.
