IOCTL_HID_GET_INPUT_REPORT IOCTL (hidclass.h)

La demande IOCTL_HID_GET_INPUT_REPORT obtient un rapport d’entrée à partir d’une collection de niveau supérieur.

Pour plus d’informations générales sur les appareils HIDClass, consultez Collections HID.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Le Parameters.DeviceIoControl.OutputBufferLength membre spécifie la taille d’une mémoire tampon de sortie allouée par le demandeur en octets. Le pilote de classe HID utilise cette mémoire tampon pour retourner un rapport d’entrée.

Si la collection inclut des ID de rapport, le demandeur doit définir le premier octet de la mémoire tampon de sortie sur un ID de rapport différent de zéro. Sinon, le demandeur doit définir le premier octet de la mémoire tampon de sortie sur zéro.

Gestion du minidriver

Irp->UserBuffer pointe vers une structure HID_XFER_PACKET que le pilote de classe HID utilise pour entrer les membres suivants :

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

Taille de la mémoire tampon en octets. La mémoire tampon doit être suffisamment grande pour contenir le rapport d’entrée plus un octet supplémentaire qui spécifie un ID de rapport différent de zéro. Si l’ID de rapport n’est pas utilisé, la valeur de l’ID est égale à zéro.

Mémoire tampon de sortie

Le Irp->MdlAddress membre pointe vers la mémoire tampon de sortie allouée au demandeur que le pilote de classe HID utilise pour retourner le rapport d’entrée. Le premier octet de la mémoire tampon, que le demandeur utilise pour entrer un ID de rapport ou zéro, est inchangé. Le rapport d’entrée est retourné à l’adresse ((PUCHAR)Irp->MdlAddress + 1).

Gestion du minidriver

((PHID_XFER_PACKET)(Irp->UserBuffer))->reportBuffer pointe vers la mémoire tampon de sortie allouée au demandeur que le minidriver HID utilise pour retourner le rapport d’entrée.

Longueur de la mémoire tampon de sortie

Taille du rapport de sortie.

Bloc d’état

Le pilote de classe HID définit les champs suivants de Irp->IoStatus:

  • Les informations sont définies sur zéro.
  • L’état est défini sur STATUS_SUCCESS si le transfert s’est terminé sans erreur. Sinon, il est défini sur un code d’erreur NTSTATUS approprié.

Gestion du minidriver

Les minidrivers HID qui effectuent les E/S sur l’appareil définissent les champs suivants de Irp->IoStatus:

  • Les informations sont définies sur le nombre d’octets transférés à partir de l’appareil.
  • L’état est défini sur STATUS_SUCCESS si le transfert s’est terminé sans erreur. Sinon, il est défini sur un code d’erreur NTSTATUS approprié.

Les minidrivers HID qui appellent d’autres pilotes avec cette IOCTL pour effectuer les E/S sur leur appareil doivent s’assurer que le champ Informations du bloc status est correct et ne pas modifier le contenu du champ État.

Configuration requise

Condition requise Valeur
En-tête hidclass.h (inclure Hidclass.h)

Voir aussi