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

# RegisterLampArrayCallback

> RegisterLampArrayCallback

# RegisterLampArrayCallback

注册一个回调函数，每次 LampArray 从系统连接或断开时都会调用它。

## 语法

```cpp theme={null}
HRESULT RegisterLampArrayCallback(
    LampArrayCallback lampArrayCallback,
    void* context,
    LampArrayCallbackToken* callbackToken);
```

### 参数

*lampArrayCallback*   \_In\_
类型：[LampArrayCallback](/reference/lighting/lamparray/functions/lamparraycallback)

要注册的、由调用方定义的函数。每当 LampArrays 从系统连接或断开时都会调用它。

*context*   \_In\_opt\_\
类型：void\*

指向包含回调函数相关信息的对象的指针。通常，这是调用对象。

*callbackToken*   \_Out\_ \_Result\_zeroonfailure\_
类型：LampArrayCallbackToken\*

可用于以后取消注册该回调函数的令牌值。

### 返回值

类型：HRESULT

函数结果。

## 备注

如果在注册回调时有任何 LampArray 设备处于连接状态，RegisterLampArrayCallback 函数将阻塞，直到对每个已连接设备都调用了该回调（这意味着回调将在调用线程上执行）。

在注册第一个回调时，LampArray API 会启动一个工作线程来处理 ILampArray 设备的连接和断开通知。这些事件并不频繁，工作线程在其他时间保持等待状态。注册调用返回后，所有后续的 LampArrayCallbacks 将在此工作线程上按顺序执行。

以下代码是注册和取消注册 LampArray 回调的示例：

```cpp theme={null}
void MyLampArrayCallback(
    _In_opt_ void* context,
    bool isAttached,
    _In_ ILampArray* lampArray)
{
    if (isAttached)
    {
        // Application-specific code to handle LampArray connection
    }
    else
    {
        // Application-specific code to handle LampArray disconnection
    }
}

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

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

## 要求

**头文件：** LampArray.h

**库：** xgameplatform.lib

**支持的平台：** XBOX One 系列主机和 XBOX Series 主机

## 另请参阅

[光照 API 概览](/build/core-features/common/lighting/gc-lighting-toc)\
[光照基础](/build/core-features/common/lighting/lighting-basics)\
[LampArrayCallback](/reference/lighting/lamparray/functions/lamparraycallback)\
[UnregisterLampArrayCallback](/reference/lighting/lamparray/functions/unregisterlamparraycallback)
