PSERVICE_CALLBACK_ROUTINE Rückruffunktion (kbdmou.h)
Ein Funktionstreiber ruft den Klassendienstrückruf in seiner ISR-Dispatch-Vervollständigungsroutine auf. Der Klassendienstrückruf überträgt Eingabedaten aus dem Eingabedatenpuffer eines Geräts an die Klassendatenwarteschlange.
Syntax
PSERVICE_CALLBACK_ROUTINE PserviceCallbackRoutine;
void PserviceCallbackRoutine(
[in] PVOID NormalContext,
[in] PVOID SystemArgument1,
[in] PVOID SystemArgument2,
[in, out] PVOID SystemArgument3
)
{...}
Parameter
[in] NormalContext
Zeiger auf das Klassengeräteobjekt.
[in] SystemArgument1
Zeiger auf das erste Tastatureingabedatenpaket im Eingabedatenpuffer des Portgeräts.
[in] SystemArgument2
Zeiger auf das Tastatureingabedatenpaket, das unmittelbar auf das letzte Datenpaket im Eingabedatenpuffer des Portgeräts folgt.
[in, out] SystemArgument3
Zeiger auf die Anzahl der Tastatureingabedatenpakete, die von der Routine übertragen werden.
Rückgabewert
Keine
Bemerkungen
Rückruf des Tastaturklassendiensts
Hier sehen Sie die Definition der Rückrufroutine für den Tastaturklassendienst.
Kbdclass verwendet eine IOCTL_INTERNAL_KEYBOARD_CONNECT Anforderung, um den Klassendienstrückruf mit einem Tastaturgerät zu verbinden. In diesem Aufruf legt der Treiber seine Implementierung in einer CONNECT_DATA-Struktur fest.
/*
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 überträgt Eingabedaten aus dem Eingabepuffer des Geräts an die Klassendatenwarteschlange. Diese Routine wird von der ISR-Vervollständigungsroutine des Funktionstreibers aufgerufen.
KeyboardClassServiceCallback kann durch einen Filterdienstrückruf ergänzt werden, der von einem Tastaturfiltertreiber auf oberster Ebene bereitgestellt wird. Ein Filterdienstrückruf filtert die Tastaturdaten, die in die Klassendatenwarteschlange übertragen werden. Der Rückruf des Filterdiensts kann beispielsweise Daten löschen, transformieren oder einfügen. Kbfiltr, der Beispielfiltertreiber im Codekatalog, enthält KbFilter_ServiceCallback, bei dem es sich um eine Vorlage für einen Tastaturfilterdienstrückruf handelt.
Rückruf des Mausklassendiensts
Hier ist die MouseClassServiceCallback-Routine die Klassendienstrückrufroutine, die von Mouclass bereitgestellt wird. Der Treiber verwendet eine IOCTL_INTERNAL_MOUSE_CONNECT-Anforderung , um seinen Klassendienstrückruf mit einem Mausgerät zu verbinden. In diesem Aufruf legt der Treiber seine Implementierung in einer CONNECT_DATA-Struktur fest.
/*
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 überträgt Eingabedaten aus dem Eingabepuffer des Geräts an die Klassendatenwarteschlange. Diese Routine wird von der ISR-Vervollständigungsroutine des Funktionstreibers aufgerufen.
MouseClassServiceCallback kann durch einen Filterdienstrückruf ergänzt werden, der von einem Mausfiltertreiber auf oberster Ebene bereitgestellt wird. Ein Filterdienstrückruf kann die Mausdaten filtern, die in die Klassendatenwarteschlange übertragen werden. Der Rückruf des Filterdiensts kann beispielsweise Daten löschen, transformieren oder einfügen. Moufiltr, der Beispielfiltertreiber im WDK, enthält MouFilter_ServiceCallback, bei dem es sich um eine Vorlage für einen Filterdienstrückruf handelt.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | kbdmou.h |
IRQL | DISPATCH_LEVEL |