> ## 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.

# XGameStreamingRegisterClientPropertiesChanged

> XGameStreamingRegisterClientPropertiesChanged

# XGameStreamingRegisterClientPropertiesChanged

Registra una devolución de llamada que se invocará cuando cambien las propiedades de cualquier dispositivo cliente de streaming.

> [!NOTE]
>
> Tras el registro, la devolución de llamada se invocará con las propiedades de cliente actuales del dispositivo cliente.

## Sintaxis

```cpp theme={null}
HRESULT XGameStreamingRegisterClientPropertiesChanged(  
         XGameStreamingClientId client,  
         XTaskQueueHandle queue,  
         void* context,  
         XGameStreamingClientPropertiesChangedCallback* callback,  
         XTaskQueueRegistrationToken* token  
)  
```

### Parámetros

*client*   \_In\_\
Tipo: XGameStreamingClientId

Identificador del cliente de streaming de juegos para el que se registra a fin de recibir devoluciones de llamada.

*queue*   \_In\_opt\_\
Tipo: XTaskQueueHandle

Identificador de la cola asincrónica en la que se colocará la devolución de llamada de cambio.

*context*   \_In\_opt\_\
Tipo: void\*

Un puntero opcional a un contexto que se pasará a la función de devolución de llamada.

*callback*   \_In\_\
Tipo: [XGameStreamingClientPropertiesChangedCallback\*](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingclientpropertieschangedcallback.md)

La función de devolución de llamada que se invocará cuando cambien las propiedades del cliente.

*token*   \_Out\_\
Tipo: XTaskQueueRegistrationToken\*

Un puntero al token de registro que se puede usar para anular el registro del evento.

### Valor devuelto

Tipo: HRESULT

Devuelve **S\_OK** si se realiza correctamente; de lo contrario, devuelve un código de error.

#### Posibles errores

| Código de error | Valor de error | Motivo del error |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | No se ha inicializado el entorno de ejecución de XGameStreaming. Llame a [XGameStreamingInitialize](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreaminginitialize.md) antes de llamar a otras API. |
| E\_GAMESTREAMING\_CLIENT\_NOT\_CONNECTED | 0x89245401 | El cliente especificado no está conectado. |

Para obtener una lista de códigos de error, consulte [Códigos de error](https://docs.xbox.com/es/reference/errorcodes.md).

## Comentarios

> [!NOTE]
>
> No es seguro llamar a esta función en un subproceso sensible al tiempo. Para obtener más información, consulte [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).

Esta API permite al juego recibir una `XGameStreamingClientPropertiesChangedCallback` cada vez que cambia una [XGameStreamingClientProperty](https://docs.xbox.com/es/reference/system/xgamestreaming/enums/xgamestreamingclientproperty.md), como las dimensiones físicas de la transmisión.

El registro **HARÁ** que la devolución de llamada se invoque con todas las `XGameStreamingClientProperty` aplicables, de modo que se puedan consultar los detalles actuales de las propiedades.

Cuando el dispositivo cliente de streaming se desconecte, use [XGameStreamingUnregisterClientPropertiesChanged](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingunregisterclientpropertieschanged.md) para anular el registro de la devolución de llamada.

## Ejemplo

```cpp theme={null}
    // On client connection maintain a list of clients and do per client initialization
    void GameStreamingClientManager::OnClientConnected(XGameStreamingClientId client)
    {
        StreamingClient connectedClient;
        connectedClient.clientId = client;
        connectedClient.propertiesChangedToken = token;

        // Do per-client initialization
        XGameStreamingClientPropertiesChangedRegistrationToken token = {0};
        XGameStreamingRegisterClientPropertiesChanged(
            client, m_taskQueue, this, &OnClientPropertiesChanged, &token);        

        connectedClient.propertiesChangedToken = token;
        m_streamingClients.push_back(connectedClient);
    }

    // Some of the properties of our streaming client have changed, react to any of the changes which apply to our game
    void GameStreamingClientManager::OnClientPropertiesChanged(
        void* context,
        XGameStreamingClientId client,
        uint32_t updatedPropertiesCount,
        XGameStreamingClientProperty* updatedProperties)
    {
        GameStreamingClientManager* gsClientManager = reinterpret_cast<GameStreamingClientManager*>(context);

        for (uint32_t i = 0; i < updatedPropertiesCount; ++i)
        {
            switch (updatedProperties[i])
            {
                // The client now has a new physical size of the game stream - update our list of stream
                // sizes to reflect this.
            case XGameStreamingClientProperty::StreamPhysicalDimensions:
                gsClientManager->UpdateClientPhysicalDimensions(client); 
                break;

            case XGameStreamingClientProperty::TouchInputEnabled: 
                gsClientManager->UpdateClientTouchEnabled(client); 
                break;

            default:
                // A characteristic we are not tracking - do nothing
                break;
            }
        }
    }

```

## Requisitos

**Encabezado:** xgamestreaming.h

**Biblioteca:** xgameruntime.lib

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

## Documentación conceptual

* [Subprocesos sensibles al tiempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## Consulte también

[XGameStreamingClientProperty](https://docs.xbox.com/es/reference/system/xgamestreaming/enums/xgamestreamingclientproperty.md)\
[XGameStreamingClientPropertiesChangedCallback](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingclientpropertieschangedcallback.md)\
[XGameStreamingUnregisterClientPropertiesChanged](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingunregisterclientpropertieschanged.md)\
[XGameStreaming](https://docs.xbox.com/es/reference/system/xgamestreaming/xgamestreaming_members.md)


## Related topics

- [XGameStreamingClientPropertiesChangedCallback](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingclientpropertieschangedcallback.md)
- [XGameStreamingUnregisterClientPropertiesChanged](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingunregisterclientpropertieschanged.md)
- [XGameStreamingClientProperty](https://docs.xbox.com/es/reference/system/xgamestreaming/enums/xgamestreamingclientproperty.md)
- [XGameStreamingIsTouchInputEnabled](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreamingistouchinputenabled.md)
- [XGameStreamingGetSessionId](https://docs.xbox.com/es/reference/system/xgamestreaming/functions/xgamestreaminggetsessionid.md)
