2014-12-26 7 views
-2

부팅 할 때 조각 모음 응용 프로그램을 쓰고 있습니다.하지만 문제는 모니터가 시작되고 검은 색 화면이 나타나는 부팅시 키보드 키를 눌렀을 때 아무런 응답이 없습니까?키보드가 부팅 할 때 응답하지 않습니까?

내 코드를 그런 식으로 진행됩니다

내가 NtCreateFile는 "장치 \ KeyboardClass0를"이의를 호출하고 객체에 핸들을 성공적으로 반환합니다.
  • 그런 다음 NtCreateEvent를 사용하여 이벤트를 만들고 성공적으로 반환합니다.
  • 그런 다음 핸들과 이벤트로 NtReadFile을 호출합니다.
  • 그런 다음 읽을 항목이있을 때 이벤트를 알리기 위해 NtWaitForSingleObject를 기다립니다.
  • 내가 신호를 받으면 사용자가 누른 키를 읽으려고합니다.
  • 문제는 도달하지 못했다되는 5 단계이며, I는 USB 키보드 키를 눌러 오전 키보드를 누르지 않은 것처럼 아무것도, 발생하지 않습니다.

    동일한 코드가 PS/2 키보드에서 정상적으로 작동하지만 USB 키보드로는 을 읽을 수 없습니다.

    +0

    OK, 프로그램에는 심각한 결과가있는 버그가 있습니다. 그러한 소프트웨어로만 기대됩니다. 유틸리티를 디버깅하기 위해 agin을 시도하기 전에 백업에서 간단히 다시 포맷하고 복원하십시오. –

    +0

    동일한 코드를 테스트했지만 아직 버그를 찾지 못했습니다. 나는 다른 Windows 기계에 동일한 부호를 시험했다. 그러나, 문제는 아직도 계속한다. PS/2 키보드 코드는 정상적으로 작동하지만 USB 키보드에 문제가 있습니다. CMOS 배터리도 포맷했습니다.하지만 여전히 해결책이 없습니다. Windows의 '디스크 검사'가 시작되면 제대로 Esc 키가 인식됩니다.하지만 'Deframentation'응용 프로그램에서 키 누르기를 인식하지 못합니다. –

    답변

    1

    마지막으로, 해결책이 있습니다. 문제는 사용중인 키보드 유형, 즉 PS2 또는 USB에 관한 것입니다. 키보드 인터페이스의 모든 인스턴스를 가져와 동시에 모든 키보드에서 읽을 필요가 있습니다. 마더 보드에 PS2 키보드 포트가 있기 때문에 부팅 할 때 우선 순위가됩니다. USB 키보드의 경우, 왜냐하면 Windows 시스템은 USB 키보드 클래스 인스턴스를 등록하는 데 더 많은 시간이 필요하기 때문입니다.