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

# RegisterLampArrayStatusCallback

> Registra um LampArrayStatusCallback que é disparado em alterações de status de LampArray e controla se a enumeração inicial de dispositivos bloqueia ou é executada de forma assíncrona.

# RegisterLampArrayStatusCallback

Registra uma função de retorno de chamada a ser invocada sempre que o status do LampArray mudar.

## Sintaxe

```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](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/lamparraystatuscallback.md)

Uma função definida pelo chamador a ser registrada. Ela será invocada quando o status do LampArray mudar.

*enumerationKind*\
Tipo: [LampArrayEnumerationKind](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/enums/lamparrayenumerationkind.md)

Especifica o comportamento desejado de enumeração de dispositivos da função [LampArrayStatusCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/lamparraystatuscallback.md).

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

Um ponteiro para um objeto que contém informações relevantes para a função de retorno de chamada. Normalmente, é o objeto que faz a chamada.

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

Um valor de token que pode ser usado para cancelar o registro da função de retorno de chamada posteriormente.

### Valor retornado

Tipo: HRESULT

Resultado da função.

## Comentários

O parâmetro LampArrayEnumerationKind permite que o chamador especifique como deve receber retornos de chamada para quaisquer dispositivos LampArray conectados no momento desta chamada. Se [LampArrayEnumerationKind::Blocking](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/enums/lamparrayenumerationkind.md) for selecionado, a função [RegisterLampArrayStatusCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/registerlamparraystatuscallback.md) bloqueará até que esse retorno de chamada seja invocado para cada dispositivo conectado (o que significa que o retorno de chamada será invocado no thread de chamada).

Quando o primeiro retorno de chamada é registrado, a API LampArray inicia um thread de trabalho para lidar com as notificações de status de dispositivos ILampArray. Esses eventos são pouco frequentes e, fora isso, o thread de trabalho permanece em estado de espera. Depois que a chamada de registro retorna, todos os LampArrayStatusCallbacks subsequentes serão invocados sequencialmente nesse thread de trabalho.

Se [LampArrayEnumerationKind::Async](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/enums/lamparrayenumerationkind.md) for especificado, esta chamada retornará imediatamente, e quaisquer LampArrays conectados no momento da chamada serão enumerados no thread de trabalho de retorno de chamada do LampArray mencionado anteriormente.

O código a seguir é um exemplo de registro e cancelamento de registro de uma função [LampArrayStatusCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/lamparraystatuscallback.md):

```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

**Cabeçalho:** LampArray.h

**Biblioteca:** xgameplatform.lib

**Plataformas compatíveis:** consoles da família XBOX One e consoles XBOX Series

## Confira também

[Visão geral da API de iluminação](https://docs.xbox.com/pt-BR/build/core-features/common/lighting/gc-lighting-toc.md)\
[Noções básicas de iluminação](https://docs.xbox.com/pt-BR/build/core-features/common/lighting/lighting-basics.md)\
[LampArrayStatusCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/lamparraystatuscallback.md)\
[UnregisterLampArrayCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/unregisterlamparraycallback.md)\
[LampArrayEnumerationKind](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/enums/lamparrayenumerationkind.md)


## Related topics

- [LampArrayStatusCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/lamparraystatuscallback.md)
- [Noções básicas do LampArray](https://docs.xbox.com/pt-BR/build/core-features/common/lighting/lighting-basics.md)
- [Enumeração LampArrayEnumerationKind](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/enums/lamparrayenumerationkind.md)
- [Referência da API de iluminação (conteúdo da API)](https://docs.xbox.com/pt-BR/reference/lighting/gc-reference-lighting-toc.md)
- [RegisterLampArrayCallback](https://docs.xbox.com/pt-BR/reference/lighting/lamparray/functions/registerlamparraycallback.md)
