Passer au contenu principal
Gestionnaire de lecture du stockage que PlayFab appelle lorsqu’il doit lire des données du stockage. Implémentez-le en tant que XAsyncProvider.

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. Lisez les données stockées sous cette clé. async   _Inout_ XAsyncBlock* Le XAsyncBlock de l’opération de lecture.

Valeur de retour

Type : HRESULT Retournez S_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 membre read 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 la lecture et la taille, en octets, des données que vous avez lues. PlayFab appelle ensuite XAsyncGetResultSize et XAsyncGetResult pour copier les données; votre fournisseur doit donc copier les données dans le membre buffer de XAsyncProviderData lorsqu’il reçoit XAsyncOp::GetResult. Si aucune donnée n’est stockée sous key, l’implémentation par défaut termine l’opération avec S_OK et une taille de résultat de 0. Faites de même dans votre gestionnaire. 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.

Configuration requise

En-tête : PFPlatform.h Bibliothèque : PlayFabCore.lib Plateformes prises en charge : Windows, consoles de la famille XBOX One et consoles XBOX Series

Voir aussi

Membres de PFPlatform PFLocalStorageHooks PFPlatformLocalStorageSetHandlers XAsyncProvider PFPlatformLocalStorageWriteAsyncHandler PFPlatformLocalStorageClearAsyncHandler
Dernière modification le 5 novembre 2026