2014-05-15 3 views
2
지정된 컨트롤러가 초기화되지 않은 공급 XINPUT_KEYSTROKE 구조체두고 연결되어 있지 않거나 XInputGetKeyStroke가 ERROR_SUCCESS를 반환하는 것

: 내가 뭔가 잘못하고 있습니까XInputGetKeyStroke 컨트롤러가 연결되어 있지 않은 상태 ERROR_SUCCESS를 반환

XINPUT_KEYSTROKE xStroke; 
DWORD ret = XInputGetKeyStroke(0, 0, &xStroke); 
if (ret == ERROR_SUCCESS) 
    printf("ERROR_SUCCESS\n"); 

또는이 XInput에의 버그 ? xinput1_3.dll은 내가 사용하고있는 버전입니다. DirectX 2010 SDK의 헤더/라이브러리에 대해 컴파일/링크하고 있습니다. 컨트롤러가 플러그인되면 XInputGetKeyStrokes가 예상대로 작동하는 것 같습니다.

답변

0

xinput1_3.dll에서 동일한 문제가 발생했으며 내 연구에서 구현되지 않은 것처럼 보입니다. Windows 8의 xinput1_4.dll에서 구현 될 수 있지만이를 테스트 할 수는 없습니다. 이 2014년 4월 26일의로 구현 아니에요

확인 : http://controllermax.com/forums/archive/index.php/t-142531.html

소스의 대부분 허용하지

하지만 내가 찾을 수있는 전부입니다.

0

XInputGetKeyStroke에 대한 지원이 XInput 1.3 (2007 년 4 월)에 추가되었지만 'Chatpad'장치를 지원하는 Windows 드라이버가 없으므로 컨트롤러 "단추 키"로만 제한됩니다.

이 기능의 소스는 XInput 1.3 (레거시 DirectX SDK/DirectSetup을 통해 Windows 7에서 사용할 수있는 마지막 버전)과 XInput 1.4 (Windows 8.x의 현재 버전) 사이에서 변경되지 않았습니다. 따라서 if 여기에 버그가 있습니다. XInput 1.4에서도 마찬가지입니다.

이 특별한 API는 실제로 'Chatpad'가 지원되는 Xbox 360에서만 유용하며 XInput에 대한 하위 레벨의 이야기 때문에 XInput 1.3.1보다는 XInput 1.3.1을 사용하는 것이 더 좋습니다. 표준 XInputGetState 방법을 사용합니다. 아마도 더 유용한 추상화 인 DirectX Tool Kit GamePad 클래스에는 전혀 XInputGetKeyStroke을 사용하지 않습니다.

XINPUT and Windows 8DirectX Tool Kit: Now with GamePads

UPDATE를 참조하십시오 :이 상태에서 결과 및 버그를 제출합니다 코드 경로를 발견,하지만 XInput에 1.3 고정 얻을 가능성이 아니에요. 한 가지 해결 방법은 다른 상태 (XInputGetState 또는 XInputGetCapabilities)를 사용하여 연결 상태를 확인한 다음 XInputGetKeyStroke이 연결된 경우에만 호출하는 것입니다.