PSERVICE_CALLBACK_ROUTINE 콜백 함수(kbdmou.h)

함수 드라이버는 ISR 디스패치 완료 루틴에서 클래스 서비스 콜백을 호출합니다. 클래스 서비스 콜백은 디바이스의 입력 데이터 버퍼에서 클래스 데이터 큐로 입력 데이터를 전송합니다.

구문

PSERVICE_CALLBACK_ROUTINE PserviceCallbackRoutine;

void PserviceCallbackRoutine(
  [in]      PVOID NormalContext,
  [in]      PVOID SystemArgument1,
  [in]      PVOID SystemArgument2,
  [in, out] PVOID SystemArgument3
)
{...}

매개 변수

[in] NormalContext

클래스 디바이스 개체에 대한 포인터입니다.

[in] SystemArgument1

포트 디바이스의 입력 데이터 버퍼에 있는 첫 번째 키보드 입력 데이터 패킷에 대한 포인터입니다.

[in] SystemArgument2

포트 디바이스의 입력 데이터 버퍼에서 마지막 데이터 패킷 바로 뒤에 있는 키보드 입력 데이터 패킷에 대한 포인터입니다.

[in, out] SystemArgument3

루틴에 의해 전송되는 키보드 입력 데이터 패킷 수에 대한 포인터입니다.

반환 값

없음

설명

키보드 클래스 서비스 콜백

다음은 키보드 클래스 서비스 콜백 루틴의 정의입니다.

Kbdclass는 IOCTL_INTERNAL_KEYBOARD_CONNECT 요청을 사용하여 클래스 서비스 콜백을 키보드 디바이스에 연결합니다. 이 호출에서 드라이버는 구현을 CONNECT_DATA 구조로 설정합니다.


/*
DeviceObject [in] 
Pointer to the class device object.

InputDataStart [in] 
Pointer to the first keyboard input data packet in the input data buffer of the port device.

InputDataEnd [in] 
Pointer to the keyboard input data packet that immediately follows the last data packet in the input data buffer of the port device.

InputDataConsumed [in, out] 
Pointer to the number of keyboard input data packets that are transferred by the routine.

*/
VOID KeyboardClassServiceCallback(
  _In_    PDEVICE_OBJECT       DeviceObject,
  _In_    PKEYBOARD_INPUT_DATA InputDataStart,
  _In_    PKEYBOARD_INPUT_DATA InputDataEnd,
  _Inout_ PULONG               InputDataConsumed
);

KeyboardClassServiceCallback 은 디바이스의 입력 버퍼에서 클래스 데이터 큐로 입력 데이터를 전송합니다. 이 루틴은 함수 드라이버의 ISR 디스패치 완료 루틴에 의해 호출됩니다.

KeyboardClassServiceCallback 은 상위 수준의 키보드 필터 드라이버에서 제공하는 필터 서비스 콜백으로 보완할 수 있습니다. 필터 서비스 콜백은 클래스 데이터 큐로 전송되는 키보드 데이터를 필터링합니다. 예를 들어 필터 서비스 콜백은 데이터를 삭제, 변환 또는 삽입할 수 있습니다. 코드 갤러리의 샘플 필터 드라이버인 Kbfiltr에는 키보드 필터 서비스 콜백에 대한 템플릿인 KbFilter_ServiceCallback 포함되어 있습니다.

마우스 클래스 서비스 콜백

다음은 Mouclass에서 제공하는 클래스 서비스 콜백 루틴인 MouseClassServiceCallback 루틴입니다. 드라이버는 IOCTL_INTERNAL_MOUSE_CONNECT 요청을 사용하여 클래스 서비스 콜백을 마우스 디바이스에 연결합니다. 이 호출에서 드라이버는 구현을 CONNECT_DATA 구조로 설정합니다.


/*
DeviceObject [in] 
Pointer to the class device object.

InputDataStart [in] 
Pointer to the first mouse input data packet in the input buffer of the port device.

InputDataEnd [in] 
Pointer to the mouse input data packet that immediately follows the last data packet in the input data buffer of the port device.

InputDataConsumed [in, out] 
Pointer to the number of mouse input data packets that are transferred by the routine.

*/
VOID MouseClassServiceCallback(
  _In_    PDEVICE_OBJECT    DeviceObject,
  _In_    PMOUSE_INPUT_DATA InputDataStart,
  _In_    PMOUSE_INPUT_DATA InputDataEnd,
  _Inout_ PULONG            InputDataConsumed
);
);

MouseClassServiceCallback 은 디바이스의 입력 버퍼에서 클래스 데이터 큐로 입력 데이터를 전송합니다. 이 루틴은 함수 드라이버의 ISR 디스패치 완료 루틴에 의해 호출됩니다.

MouseClassServiceCallback 은 상위 수준의 마우스 필터 드라이버에서 제공하는 필터 서비스 콜백으로 보완할 수 있습니다. 필터 서비스 콜백은 클래스 데이터 큐로 전송되는 마우스 데이터를 필터링할 수 있습니다. 예를 들어 필터 서비스 콜백은 데이터를 삭제, 변환 또는 삽입할 수 있습니다. WDK의 샘플 필터 드라이버인 Moufiltr에는 필터 서비스 콜백에 대한 템플릿인 MouFilter_ServiceCallback 포함되어 있습니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 kbdmou.h
IRQL DISPATCH_LEVEL

추가 정보

CONNECT_DATA

KEYBOARD_INPUT_DATA

MOUSE_INPUT_DATA