IOCTL_INTERNAL_I8042_HOOK_KEYBOARD IOCTL(ntdd8042.h)

IOCTL_INTERNAL_I8042_HOOK_KEYBOARD 요청은 다음을 수행합니다.

  • I8042prt 키보드 초기화 루틴에 초기화 콜백 루틴 추가
  • I8042prt 키보드 ISR에 ISR 콜백 루틴 추가
초기화 및 ISR 콜백은 선택 사항이며 PS/2 스타일 키보드 디바이스에 대한 상위 수준 필터 드라이버에서 제공됩니다.

I8042prt는 IOCTL_INTERNAL_KEYBOARD_CONNECT 요청을 받은 후 동기 IOCTL_INTERNAL_I8042_HOOK_KEYBOARD 요청을 키보드 디바이스 스택의 맨 위로 보냅니다.

Kbfiltr가 후크 키보드 요청을 수신하면 Kbfiltr는 다음과 같은 방식으로 요청을 필터링합니다.

  • 상위 수준 디바이스 개체의 컨텍스트, 초기화 콜백에 대한 포인터 및 ISR 콜백에 대한 포인터를 포함하는 Kbfiltr에 전달된 상위 수준 정보를 저장합니다.
  • 상위 수준 정보를 자체 정보로 바꿉니다.
  • Kbfiltr ISR 콜백에서 사용할 수 있는 콜백에 대한 I8042prt 및 포인터의 컨텍스트를 저장합니다.
이 요청 및 콜백에 대한 자세한 내용은 다음 항목을 참조하세요.

I8042prt 콜백 루틴

Kbfiltr 콜백 루틴

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

Parameters.DeviceIoControl.Type3InputBuffer는 INTERNAL_I8042_HOOK_KEYBOARD 구조를 가리킵니다. 이 구조체에는 다음 멤버가 포함됩니다.

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLength 멤버는 INTERNAL_I8042_HOOK_KEYBOARD 구조체의 크기(바이트)보다 크거나 같은 값으로 설정됩니다.

출력 버퍼

없음

출력 버퍼 길이

없음

상태 블록

상태 멤버는 다음 값 중 하나로 설정됩니다.

STATUS_INVALID_PARAMETER

Parameters.DeviceIoControl.InputBufferLength 는 INTERNAL_I8042_HOOK_KEYBOARD 구조체의 크기(바이트)보다 작습니다.

STATUS_SUCCESS

요청이 성공적으로 완료되었습니다.

요구 사항

   
헤더 ntdd8042.h(Ntdd8042.h 포함)

참고 항목

INTERNAL_I8042_HOOK_KEYBOARD

IOCTL_INTERNAL_KEYBOARD_CONNECT