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포함되어 있습니다.
마우스 클래스 서비스 콜백
다음은 MouseClassServiceCallback 루틴은 Mouclass에서 제공하는 클래스 서비스 콜백 루틴입니다. 드라이버는 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 |