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

# Función RegisterLampArrayStatusCallback

> Registra una LampArrayStatusCallback que se activa cuando cambia el estado de un LampArray y controla si la enumeración inicial de dispositivos se bloquea o se ejecuta de forma asincrónica.

# RegisterLampArrayStatusCallback

Registra una función de devolución de llamada que se invocará cada vez que cambie el estado del LampArray.

## Sintaxis

```cpp theme={null}
STDAPI RegisterLampArrayStatusCallback(
    _In_ LampArrayStatusCallback callbackFunc,
    LampArrayEnumerationKind enumerationKind,
    _In_opt_ void * context,
    _Out_ _Result_zeroonfailure_ LampArrayCallbackToken * callbackToken);
```

### Parámetros

*callbackFunc*   \_In\_
Tipo: [LampArrayStatusCallback](/reference/lighting/lamparray/functions/lamparraystatuscallback)

Función definida por el autor de la llamada que se va a registrar. Se invocará cuando cambie el estado del LampArray.

*enumerationKind*\
Tipo: [LampArrayEnumerationKind](/reference/lighting/lamparray/enums/lamparrayenumerationkind)

Especifica el comportamiento deseado de enumeración de dispositivos de la función [LampArrayStatusCallback](/reference/lighting/lamparray/functions/lamparraystatuscallback).

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

Puntero a un objeto que contiene información relevante para la función de devolución de llamada. Normalmente, es el objeto que realiza la llamada.

*callbackToken*   \_Out\_ \_Result\_zeroonfailure\_
Tipo: LampArrayCallbackToken\*

Valor de token que se puede usar para anular el registro de la función de devolución de llamada más adelante.

### Valor devuelto

Tipo: HRESULT

Resultado de la función.

## Comentarios

El parámetro LampArrayEnumerationKind permite que el autor de la llamada especifique cómo debe recibir devoluciones de llamada para los dispositivos LampArray que estén conectados en el momento de esta llamada. Si se selecciona [LampArrayEnumerationKind::Blocking](/reference/lighting/lamparray/enums/lamparrayenumerationkind), la función [RegisterLampArrayStatusCallback](/reference/lighting/lamparray/functions/registerlamparraystatuscallback) se bloqueará hasta que esa devolución de llamada se invoque para cada dispositivo conectado (lo que significa que la devolución de llamada se invocará en el subproceso que realiza la llamada).

Cuando se registra la primera devolución de llamada, la API de LampArray inicia un subproceso de trabajo para gestionar las notificaciones de estado de dispositivos ILampArray. Estos eventos son poco frecuentes y, por lo demás, el subproceso de trabajo permanece en estado de espera. Después de que la llamada de registro se devuelva, todas las LampArrayStatusCallbacks posteriores se invocarán secuencialmente en este subproceso de trabajo.

Si se especifica [LampArrayEnumerationKind::Async](/reference/lighting/lamparray/enums/lamparrayenumerationkind), esta llamada se devolverá inmediatamente, y los LampArray conectados en el momento de la llamada se enumerarán en el subproceso de trabajo de devoluciones de llamada de LampArray mencionado anteriormente.

El código siguiente es un ejemplo de registro y anulación del registro de una función [LampArrayStatusCallback](/reference/lighting/lamparray/functions/lamparraystatuscallback):

```c++ theme={null}
void MyLampArrayStatusCallback(
    _In_opt_ void* context,
    LampArrayStatus currentStatus,
    LampArrayStatus previousStatus,
    _In_ ILampArray* lampArray)
{
    // Application-specific code to handle LampArray status changes
}

void MonitorLampArrays(
    _In_ volatile bool & cancelMonitoring) noexcept
{
    LampArrayCallbackToken token = LAMPARRAY_INVALID_CALLBACK_TOKEN_VALUE;
    if (SUCCEEDED(RegisterLampArrayStatusCallback(
        MyLampArrayStatusCallback,
        LampArrayEnumerationKind::Async,
        nullptr /* context */,
        &token)))
    {
        while (!cancelMonitoring)
        {
            Sleep(100);
        }

        UnregisterLampArrayCallback(token, 5000);
    }
}
```

## Requisitos

**Encabezado:** LampArray.h

**Biblioteca:** xgameplatform.lib

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

## Consulte también

[Información general de la API de iluminación](/build/core-features/common/lighting/gc-lighting-toc)\
[Conceptos básicos de iluminación](/build/core-features/common/lighting/lighting-basics)\
[LampArrayStatusCallback](/reference/lighting/lamparray/functions/lamparraystatuscallback)\
[UnregisterLampArrayCallback](/reference/lighting/lamparray/functions/unregisterlamparraycallback)\
[LampArrayEnumerationKind](/reference/lighting/lamparray/enums/lamparrayenumerationkind)


## Related topics

- [Referencia de la enumeración LampArrayEnumerationKind](/es/reference/lighting/lamparray/enums/lamparrayenumerationkind.md)
- [Referencia de la función LampArrayStatusCallback](/es/reference/lighting/lamparray/functions/lamparraystatuscallback.md)
- [Referencia de la función RegisterLampArrayCallback](/es/reference/lighting/lamparray/functions/registerlamparraycallback.md)
- [Referencia de la función LampArrayCallback](/es/reference/lighting/lamparray/functions/lamparraycallback.md)
- [Referencia de la función UnregisterLampArrayCallback](/es/reference/lighting/lamparray/functions/unregisterlamparraycallback.md)
