IOCTL_INTERNAL_KEYBOARD_CONNECT IOCTL(kbdmou.h)

IOCTL_INTERNAL_KEYBOARD_CONNECT 요청은 Kbdclass 서비스를 키보드 디바이스에 연결합니다. Kbdclass는 키보드 디바이스를 열기 전에 이 요청을 키보드 디바이스 스택 아래로 보냅니다.

Kbfiltr에서 키보드 연결 요청을 받은 후 Kbfiltr는 다음과 같은 방법으로 연결 요청을 필터링합니다.

  • Kbdclass에서 필터 드라이버에 전달되는 Kbdclass의 CONNECT_DATA(Kbdclass) 구조체 복사본을 저장합니다.
  • 클래스 드라이버 연결 정보에 대한 자체 연결 정보를 대체합니다.
  • 디바이스 스택 아래로 IOCTL_INTERNAL_KEYBOARD_CONNECT 요청을 보냅니다.
요청이 성공하지 못하면 Kbfiltr는 적절한 오류 상태 요청을 완료합니다.

Kbfiltr은 Kbdclass 클래스 서비스 콜백 루틴인 KeyboardClassServiceCallback의 작업을 보완할 수 있는 필터 서비스 콜백 루틴에 대한 템플릿을 제공합니다. 필터 서비스 콜백은 디바이스 입력 버퍼에서 클래스 데이터 큐로 전송되는 입력 데이터를 필터링할 수 있습니다.

Kbdclass 서비스의 연결에 대한 자세한 내용은 다음 topics 참조하세요.

Kbdclass 클래스 서비스 콜백 루틴

Kbfiltr 콜백 루틴

주 코드

IRP_MJ_INTERNAL_DEVICE_CONTROL

입력 버퍼

Parameters.DeviceIoControl.Type3InputBuffer 멤버는 Kbdclass에 의해 할당되고 설정된 CONNECT_DATA 구조를 가리킵니다.

입력 버퍼 길이

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

출력 버퍼

Parameters.DeviceIoControl.Type3InputBuffer 멤버는 Kbfiltr에서 설정한 CONNECT_DATA 구조를 가리킵니다.

출력 버퍼 길이

CONNECT_DATA 구조체의 크기입니다.

상태 블록

정보 멤버가 0으로 설정됩니다.

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

STATUS_INVALID_PARAMETER

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

STATUS_SHARING_VIOLATION

Kbfiltr이 이미 연결되어 있습니다(필터 드라이버는 하나의 연결 요청만 지원).

STATUS_SUCCESS

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

요구 사항

요구 사항
헤더 kbdmou.h(Kbdmou.h 포함)

추가 정보

CONNECT_DATA(Kbdclass)

IOCTL_INTERNAL_I8042_HOOK_KEYBOARD

KeyboardClassServiceCallback