次の方法で共有


UnregisterLampArrayCallback

LampArray コールバック関数の登録を解除します。

構文

bool UnregisterLampArrayCallback(
    LampArrayCallbackToken callbackToken,
    uint64_t timeoutInMicroseconds);

パラメーター

callbackToken
型: LampArrayCallbackToken

登録解除するコールバック関数のトークン。 関数が RegisterLampArrayCallbackに最初に登録されたときに生成されます。

timeoutInMicroseconds
型: uint64_t

コールバックが完了して登録解除できるのを待機する時間の長さ。

戻り値

型: bool

コールバックが正常に登録解除された場合は true。 False は、無効なコールバック トークン値、または進行中のコールバックが返されるのを待機している間のタイムアウトを示します。 false を返しても、新しいコールバックがディスパッチされないことが保証されます。 既に進行中のコールバックは引き続き実行されます。

解説

UnregisterLampArrayCallback 関数が正常に返されるまで、コールバックに関連付けられているリソース (コールバック関数をホストする DLL のアンロードなど) を解放することは安全ではありません。 したがって、登録されているコールバック関数内からコールバックの登録を解除することはできず、登録を試みるとプロセスが終了します。

次のコードは、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
RegisterLampArrayCallback