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