> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PFPlatformLocalStorageWriteAsyncHandler

> Controlador de almacenamiento al que PlayFab llama para escribir un búfer de datos con una clave; inicia una operación XAsync que se completa sin carga de resultado.

Controlador de escritura en el almacenamiento al que PlayFab llama cuando necesita escribir datos en el almacenamiento. Impleméntelo como un [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md).

## Sintaxis

```cpp theme={null}
HRESULT STDAPIVCALLTYPE PFPlatformLocalStorageWriteAsyncHandler(
    void* context,
    const char* key,
    size_t dataSize,
    void const* data,
    XAsyncBlock* async
);
```

### Parámetros

**`context`**   `_In_opt_` void\*

El miembro `context` de la estructura [PFLocalStorageHooks](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md) que pasó a [PFPlatformLocalStorageSetHandlers](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragesethandlers.md). 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](https://docs.xbox.com/es/reference/system/xasync/structs/xasyncblock.md)\*

El `XAsyncBlock` de la operación de escritura.

### Valor devuelto

Tipo: HRESULT

Devuelva `S_OK` si inició la operación asincrónica en `async`, por ejemplo con [XAsyncBegin](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncbegin.md). 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](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasynccomplete.md).

## Comentarios

Para instalar este controlador, establézcalo en el miembro `write` de una estructura [PFLocalStorageHooks](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md), junto con los otros dos controladores de almacenamiento, y pase la estructura a [PFPlatformLocalStorageSetHandlers](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragesethandlers.md) antes de llamar a [PFInitialize](https://docs.xbox.com/es/services/playfab/api-references/c/pfcore/functions/pfinitialize.md). 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](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasynccomplete.md) 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](https://docs.xbox.com/es/services/playfab/api-references/c/pftrace/functions/pftraceenabletracetofile.md), 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.

## Requisitos

**Encabezado:** PFPlatform.h

**Biblioteca:** PlayFabCore.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[Miembros de PFPlatform](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/pfplatform_members.md)

[PFLocalStorageHooks](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md)

[PFPlatformLocalStorageSetHandlers](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragesethandlers.md)

[XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md)

[PFPlatformLocalStorageReadAsyncHandler](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragereadasynchandler.md)

[PFPlatformLocalStorageClearAsyncHandler](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstorageclearasynchandler.md)


## Related topics

- [PFPlatformLocalStorageClearAsyncHandler](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstorageclearasynchandler.md)
- [PFPlatformLocalStorageReadAsyncHandler](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/functions/pfplatformlocalstoragereadasynchandler.md)
- [PFLocalStorageHooks](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/structs/pflocalstoragehooks.md)
- [Información general de la API de C de Services - PFPlatform.h](https://docs.xbox.com/es/services/playfab/api-references/c/pfplatform/pfplatform_members.md)
- [XblLocalStorageWriteHandler](https://docs.xbox.com/es/reference/live/xsapi-c/platform_c/functions/xbllocalstoragewritehandler.md)
