Sintaxis
Parámetros
context _In_opt_ void*
El miembro context de la estructura PFLocalStorageHooks que pasó a PFPlatformLocalStorageSetHandlers. Puede ser nullptr. PlayFab no es propietario de este puntero.
key _In_z_ const char*
Identifica los datos. Normalmente, una ruta de acceso de archivo. Escriba los datos con esta clave.
dataSize _In_ size_t
El tamaño, en bytes, de data.
data _In_reads_bytes_(dataSize) void const*
Los datos que se van a escribir.
async _Inout_ XAsyncBlock*
El XAsyncBlock de la operación de escritura.
Valor devuelto
Tipo: HRESULT DevuelvaS_OK si inició la operación asincrónica en async, por ejemplo con XAsyncBegin. Si el controlador devuelve un HRESULT de error, PlayFab hace que la operación de almacenamiento produzca un error con ese HRESULT y no espera a que se complete async, por lo que solo debe devolver un error cuando no haya iniciado ninguna operación en async. Informe del resultado de la propia operación de almacenamiento completando async con XAsyncComplete.
Comentarios
Para instalar este controlador, establézcalo en el miembrowrite de una estructura PFLocalStorageHooks, junto con los otros dos controladores de almacenamiento, y pase la estructura a PFPlatformLocalStorageSetHandlers antes de llamar a PFInitialize. PFPlatformLocalStorageSetHandlers devuelve E_INVALIDARG si alguno de los tres controladores es nullptr. Si no establece controladores personalizados, PlayFab usa una implementación predeterminada basada en objetos cstdio y std::fstream.
Complete async con XAsyncComplete y pase el resultado de la escritura y un tamaño de resultado de 0.
La implementación predeterminada anexa data a los datos existentes de key; no los reemplaza. PlayFab depende de este comportamiento: cuando la salida de seguimiento a un archivo está habilitada con PFTraceEnableTraceToFile, PlayFab borra el archivo de seguimiento una vez y, a continuación, escribe cada mensaje de seguimiento como una escritura independiente en la misma clave. Anexe también en el controlador; de lo contrario, el archivo de seguimiento solo conservará el último mensaje.
data sigue siendo válido hasta que se completa la operación. Cópielo si lo necesita después.
PlayFab puede llamar a este controlador en línea en el subproceso que inicia la operación de almacenamiento, por lo que no dependa del subproceso en el que se ejecuta. La cola de async es una cola que PlayFab deriva del miembro queueHandle de PFLocalStorageHooks. Si queueHandle es nullptr, PlayFab la deriva de la cola en segundo plano que pasó a PFInitialize, o de la cola de tareas del proceso si esa cola también era nullptr. Las devoluciones de llamada de trabajo y de finalización de la cola derivada se ejecutan en el puerto de trabajo de la cola de la que se deriva.
PlayFab ejecuta una operación de almacenamiento cada vez e inicia la siguiente solo después de que se complete la actual.
PlayFab puede cancelar una operación pendiente llamando a XAsyncCancel en async. Controle XAsyncOp::Cancel en el proveedor si la operación de almacenamiento se puede cancelar.
Los argumentos key y async son propiedad de PlayFab y siguen siendo válidos hasta que se completa la operación. El argumento context no está cubierto por esta garantía.
