콜백 메서드를 제거합니다. 이 메서드는 더 이상 호출되지 않으며, UnregisterCallback이 완료된 후 콜백 함수에서 리소스를 제거해야 할 수 있습니다.
구문
bool UnregisterCallback(
GameInputCallbackToken callbackToken
);
매개 변수
callbackToken _In_
형식: GameInputCallbackToken
등록을 취소할 콜백 함수에 대한 토큰입니다. 함수가 처음에 IGameInput::RegisterDeviceCallback으로 등록되었을 때 생성됩니다.
반환 값
형식: bool
콜백이 성공적으로 등록 해제된 경우 True입니다.
비고
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);
}
}
요구 사항
헤더: GameInput.h
라이브러리: gameinput.lib
지원되는 플랫폼: Windows
참고 항목
입력 API 개요
IGameInput
IGameInput::RegisterDeviceCallback
IGameInput::RegisterReadingCallback
IGameInput::RegisterSystemButtonCallback