次の方法で共有


RegisterLampArrayCallback

LampArray がシステムに接続または切断されるたびに呼び出されるコールバック関数を登録します。

構文

HRESULT RegisterLampArrayCallback(
    LampArrayCallback lampArrayCallback,
    void* context,
    LampArrayCallbackToken* callbackToken);

パラメーター

lampArrayCallback _In_ Type: LampArrayCallback

登録する呼び出し元定義関数。 LampArrays がシステムに接続または切断されたときに呼び出されます。

context _In_opt_
型: void*

コールバック関数の関連情報を含むオブジェクトへのポインター。 通常、これは呼び出し元のオブジェクトです。

callbackToken _Out_ _Result_zeroonfailure_ Type: LampArrayCallbackToken*

後でコールバック関数の登録を解除するために使用できるトークン値。

戻り値

型: HRESULT

関数の結果です。

解説

コールバックの登録時に LampArray デバイスがアタッチされている場合、RegisterLampArrayCallback 関数は、アタッチされたデバイスごとにコールバックが呼び出されるまでブロックされます (つまり、コールバックは呼び出し元のスレッドで呼び出されます)。

最初のコールバックが登録されると、LampArray API は、ILampArray デバイスのアタッチと削除の通知を処理するワーカー スレッドを開始します。 これらのイベントは頻度が低く、それ以外の場合、ワーカー スレッドは待機状態のままです。 登録呼び出しが返されると、後続のすべての LampArrayCallbacks がこのワーカー スレッドで順番に呼び出されます。

次のコードは、LampArray コールバックの登録と登録解除の例です。

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 本体

関連項目

Lighting API の概要
Lighting の基本
LampArrayCallback
UnregisterLampArrayCallback