다음을 통해 공유


IGameInput::UnregisterCallback(v0)

콜백 메서드를 제거합니다. 이 메서드는 더 이상 호출되지 않으며, UnregisterCallback이 완료된 후 콜백 함수에서 리소스를 제거해야 할 수 있습니다.

구문

bool UnregisterCallback(  
         GameInputCallbackToken callbackToken,  
         uint64_t timeoutInMicroseconds  
)  

매개 변수

callbackToken _In_
형식: GameInputCallbackToken

등록을 취소할 콜백 함수에 대한 토큰입니다. 함수가 처음에 IGameInput::RegisterDeviceCallback으로 등록되었을 때 생성됩니다.

timeoutInMicroseconds _In_
형식: uint64_t

등록 해제될 수 있도록 콜백이 완료될 때까지 대기할 시간입니다.

반환 값

형식: bool

콜백이 성공적으로 등록 해제된 경우 True입니다. False는 진행 중인 콜백이 반환될 때까지 대기하는 동안 시간 초과되었음을 나타냅니다. false 반환은 새 콜백이 발송되지 않고, 이미 진행 중인 콜백이 계속 실행되도록 보장합니다.

비고

IGameInput::StopCallback 메서드 및 IGameInput::UnregisterCallback 메서드는 약간 다릅니다. 어느 메서드를 호출해도 연결된 콜백이 다시 발송되지 않습니다. 하지만 UnregisterCallback 함수가 성공적으로 반환될 때까지는 콜백과 연결된 리소스를 해제하는 것이 안전하지 않습니다(예: 콜백 함수를 호스트하는 DLL 로드 해제). 따라서 등록된 콜백 함수 내에서 콜백을 등록 취소하는 것이 불가능하며, 이렇게 하려고 시도하면 오류가 반환됩니다. 하지만 콜백 함수 내에서 콜백을 취소하는 것은 안전합니다.

다음 C++ 샘플은 게임 패드 또는 키보드가 연결 해제될 때 알림을 받는 방법을 보여줍니다.

Microsoft::WRL::ComPtr<IGameInput> gameInput; 
 
void CALLBACK OnDeviceDisconnected( 
    _In_ GameInputCallbackToken callbackToken, 
    _In_ void * context, 
    _In_ IGameInputDevice * device, 
    _In_ uint64_t timestamp, 
    _In_ GameInputDeviceStatus currentStatus, 
    _In_ GameInputDeviceStatus previousStatus, 
    ) 
{ 
    if (!(currentStatus & GameInputDeviceConnected)) 
    { 
        // Application-specific code to handle the device disconnection 
    } 
} 
 
void WaitForDisconnectWorker( 
    _In_ IGameInputDevice * device, 
    _In_ volatile bool & cancelWait) noexcept 
{ 
    GameInputCallbackToken token; 
    if (SUCCEEDED(gameInput->RegisterDeviceCallback( 
        device,                                       // Watch for the specific input device 
        GameInputKindGamepad | GameInputKindKeyboard, // Listen for changes with gamepads and keyboards
        GameInputDeviceConnected,                     // Notify on changes to GameInputDeviceConnected status 
        GameInputNoEnumeration,                       // No initial enumeration needed 
        nullptr,                                      // No callback context parameter 
        OnDeviceDisconnected,                         // Callback function 
        &token)))                                     // Generated token 
    { 
        while (!cancelWait) 
        { 
            Sleep(100); 
        } 
 
        gameInput->UnregisterCallback(token, 5000); 
    } 
} 

요구 사항

헤더: GameInput.h

라이브러리: xgameruntime.lib

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

참고 항목

입력 API 개요
IGameInput
IGameInput::RegisterDeviceCallback
IGameInput::RegisterReadingCallback
IGameInput::RegistersystemButtonCallback