Partager via


IOCTL_INTERNAL_KEYBOARD_CONNECT IOCTL (kbdmou.h)

La demande IOCTL_INTERNAL_KEYBOARD_CONNECT connecte le service Kbdclass au clavier. Kbdclass envoie cette requête vers le bas de la pile du périphérique clavier avant d’ouvrir le périphérique clavier.

Une fois que Kbfiltr a reçu la demande de connexion au clavier, Kbfiltr filtre la demande de connexion de la manière suivante :

  • Enregistre une copie de la structure CONNECT_DATA de Kbdclass (Kbdclass) qui est passée au pilote de filtre par Kbdclass
  • Remplace ses propres informations de connexion par les informations de connexion du pilote de classe
  • Envoie la requête IOCTL_INTERNAL_KEYBOARD_CONNECT vers le bas de la pile d’appareils
Si la demande échoue, Kbfiltr la termine avec une erreur appropriée status.

Kbfiltr fournit un modèle pour une routine de rappel de service de filtre qui peut compléter l’opération de KeyboardClassServiceCallback, la routine de rappel de service de classe Kbdclass. Le rappel du service de filtrage peut filtrer les données d’entrée transférées de la mémoire tampon d’entrée de l’appareil vers la file d’attente de données de classe.

Pour plus d’informations sur la connexion du service Kbdclass, consultez les rubriques suivantes :

Routine de rappel du service de classe Kbdclass

Routines de rappel Kbfiltr

Code principal

IRP_MJ_INTERNAL_DEVICE_CONTROL

Mémoire tampon d'entrée

Le membre Parameters.DeviceIoControl.Type3InputBuffer pointe vers une structure CONNECT_DATA qui est allouée et définie par Kbdclass.

Longueur de la mémoire tampon d’entrée

Le membre Parameters.DeviceIoControl.InputBufferLength est défini sur une valeur supérieure ou égale à la taille, en octets, d’une structure CONNECT_DATA.

Mémoire tampon de sortie

Le membre Parameters.DeviceIoControl.Type3InputBuffer pointe vers une structure CONNECT_DATA définie par Kbfiltr.

Longueur de la mémoire tampon de sortie

Taille d’une structure CONNECT_DATA .

Bloc d’état

Le membre Information est défini sur zéro.

Le membre Status est défini sur l’une des valeurs suivantes :

STATUS_INVALID_PARAMETER

Parameters.DeviceIoControl.InputBufferLength est inférieur à la taille, en octets, d’une structure CONNECT_DATA.

STATUS_SHARING_VIOLATION

Kbfiltr est déjà connecté (le pilote de filtre ne prend en charge qu’une seule demande de connexion).

STATUS_SUCCESS

La demande s’est terminée avec succès.

Configuration requise

Condition requise Valeur
En-tête kbdmou.h (inclure Kbdmou.h)

Voir aussi

CONNECT_DATA (Kbdclass)

IOCTL_INTERNAL_I8042_HOOK_KEYBOARD

KeyboardClassServiceCallback