PSERVICE_CALLBACK_ROUTINE fonction de rappel (kbdmou.h)
Un pilote de fonction appelle le rappel de service de classe dans sa routine d’achèvement de la répartition ISR. Le rappel du service de classe transfère les données d’entrée de la mémoire tampon de données d’entrée d’un appareil vers la file d’attente de données de classe.
Syntaxe
PSERVICE_CALLBACK_ROUTINE PserviceCallbackRoutine;
void PserviceCallbackRoutine(
[in] PVOID NormalContext,
[in] PVOID SystemArgument1,
[in] PVOID SystemArgument2,
[in, out] PVOID SystemArgument3
)
{...}
Paramètres
[in] NormalContext
Pointeur vers l’objet d’appareil de classe.
[in] SystemArgument1
Pointeur vers le premier paquet de données d’entrée du clavier dans la mémoire tampon de données d’entrée du périphérique de port.
[in] SystemArgument2
Pointeur vers le paquet de données d’entrée du clavier qui suit immédiatement le dernier paquet de données dans la mémoire tampon de données d’entrée de l’appareil de port.
[in, out] SystemArgument3
Pointeur vers le nombre de paquets de données d’entrée du clavier transférés par la routine.
Valeur de retour
None
Remarques
Rappel du service de classe clavier
Voici la définition de la routine de rappel du service de classe clavier.
Kbdclass utilise une requête IOCTL_INTERNAL_KEYBOARD_CONNECT pour connecter son rappel de service de classe à un clavier. Dans cet appel, le pilote définit son implémentation dans une structure 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 transfère les données d’entrée de la mémoire tampon d’entrée de l’appareil vers la file d’attente de données de classe. Cette routine est appelée par la routine d’achèvement de la répartition ISR du pilote de fonction.
KeyboardClassServiceCallback peut être complété par un rappel de service de filtre fourni par un pilote de filtre de clavier de niveau supérieur. Un rappel de service de filtre filtre les données du clavier qui sont transférées vers la file d’attente de données de classe. Par exemple, le rappel de service de filtre peut supprimer, transformer ou insérer des données. Kbfiltr, l’exemple de pilote de filtre dans la galerie de codes, inclut KbFilter_ServiceCallback, qui est un modèle pour un rappel de service de filtre clavier.
Rappel du service de classe de souris
Voici la routine MouseClassServiceCallback est la routine de rappel de service de classe fournie par Mouclass. Le pilote utilise une demande de IOCTL_INTERNAL_MOUSE_CONNECT pour connecter son rappel de service de classe à un périphérique de souris. Dans cet appel, le pilote définit son implémentation dans une structure 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 transfère les données d’entrée de la mémoire tampon d’entrée de l’appareil vers la file d’attente de données de classe. Cette routine est appelée par la routine d’achèvement de la répartition ISR du pilote de fonction.
MouseClassServiceCallback peut être complété par un rappel de service de filtre fourni par un pilote de filtre de souris de niveau supérieur. Un rappel de service de filtre peut filtrer les données de souris qui sont transférées vers la file d’attente de données de classe. Par exemple, le rappel de service de filtre peut supprimer, transformer ou insérer des données. Moufiltr, l’exemple de pilote de filtre dans le WDK, inclut MouFilter_ServiceCallback, qui est un modèle pour un rappel de service de filtre.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | kbdmou.h |
IRQL | DISPATCH_LEVEL |