다음을 통해 공유


RegisterLampArrayStatusCallback

LampArray 상태가 변경될 때마다 호출할 콜백 함수를 등록합니다.

구문

STDAPI RegisterLampArrayStatusCallback(
    _In_ LampArrayStatusCallback callbackFunc,
    LampArrayEnumerationKind enumerationKind,
    _In_opt_ void * context,
    _Out_ _Result_zeroonfailure_ LampArrayCallbackToken * callbackToken);

매개 변수

callbackFunc _In_ Type: LampArrayStatusCallback

등록할 호출자 정의 함수입니다. LampArray 상태가 변경되면 호출됩니다.

enumerationKind
형식: LampArrayEnumerationKind

LampArrayStatusCallback 함수의 원하는 디바이스 열거 동작을 지정합니다.

context _In_opt_
형식: void*

콜백 함수에 대한 관련 정보를 포함하는 개체에 대한 포인터입니다. 일반적으로 호출 개체입니다.

callbackToken _Out_ _Result_zeroonfailure_ 유형: LampArrayCallbackToken*

나중에 콜백 함수 등록을 취소하는 데 사용할 수 있는 토큰 값입니다.

반환 값

형식: HRESULT

함수 결과입니다.

설명

LampArrayEnumerationKind 매개 변수를 사용하면 호출자가 호출 시 연결된 LampArray 디바이스에 대해 콜백을 수신하는 방법을 지정할 수 있습니다. LampArrayEnumerationKind::Blocking을 선택하면 연결된 각 디바이스에 대해 해당 콜백이 호출될 때까지 RegisterLampArrayStatusCallback 함수가 차단됩니다(콜백이 호출 스레드에서 호출됨을 의미).

첫 번째 콜백이 등록되면 LampArray API는 작업자 스레드를 시작하여 ILampArray 디바이스 상태 알림을 처리합니다. 이러한 이벤트는 자주 발생하지 않으며 작업자 스레드는 그렇지 않으면 대기 상태로 유지됩니다. 등록 호출이 반환되면 모든 후속 LampArrayStatusCallbacks가 이 작업자 스레드에서 순차적으로 호출됩니다.

LampArrayEnumerationKind::Async를 지정하면 호출이 즉시 반환되고 호출 시 연결된 모든 LampArrays가 앞서 언급한 LampArray 콜백 작업자 스레드에 열거됩니다.

다음 코드는 LampArrayStatusCallback 함수를 등록 및 등록 취소하는 예제입니다.

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);
    }
}

요구 사항

헤더: LampArray.h

라이브러리: xgameplatform.lib

지원되는 플랫폼: Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

조명 API 개요
조명 기본 사항
LampArrayStatusCallback
UnregisterLampArrayCallback
LampArrayEnumerationKind