콜백 메서드를 제거합니다. 이 메서드는 더 이상 호출되지 않으며, 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