Partager via


Prise en charge de la séquence d’appels IOCTL biométriques

WBDI est une interface basée sur IOCTL standard Windows. Lorsque vous écrivez un pilote WBDI, vous devez prendre en charge un ensemble de IOCTL obligatoires. Vous pouvez également choisir de prendre en charge des IOCTL facultatifs. Vous trouverez une liste complète des IOCTL obligatoires et facultatifs dans les IOCTL biométriques.

Un pilote WBDI fourni par le fournisseur doit être prêt à recevoir des demandes IOCTL dans l’ordre suivant du service biométrique Windows (WBS). Vous pouvez consulter des exemples de gestionnaires pour ces IOCTL dans Device.cpp dans WudfBioUsbSample.

  1. Le service biométrique Windows ou l’adaptateur de capteur initialise l’appareil biométrique et vérifie qu’il est prêt à être utilisé. Le service ou l’adaptateur envoie une demande de IOCTL_BIOMETRIC_GET_ATTRIBUTES .

    Le pilote reçoit un pointeur vers une structure WINBIO_SENSOR_ATTRIBUTES. Dans le gestionnaire de ce IOCTL, le pilote doit renseigner les membres pertinents de cette structure et terminer la demande en appelant IWDFIoRequest ::Complete.

  2. Ensuite, le pilote reçoit IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Le pilote doit renseigner les membres appropriés de la structure WINBIO_DIAGNOSTICS et terminer la demande.

  3. Si le pilote indique que l’étalonnage est nécessaire dans le membre SensorStatus de la structure WINBIO_DIAGNOSTICS qui a été retournée par la demande de IOCTL_BIOMETRIC_GET_SENSOR_STATUS, le pilote reçoit ensuite une demande de IOCTL_BIOMETRIC_CALIBRATE. Le pilote doit fournir un gestionnaire pour ce IOCTL. Après avoir calibré l’appareil, le rappel doit retourner une structure WINBIO_CALIBRATION_INFO.

  4. Le pilote peut maintenant s’attendre à recevoir des demandes IOCTL_BIOMETRIC_CAPTURE_DATA . Étant donné qu’une seule capture peut être en attente à tout moment, le gestionnaire de cette demande doit d’abord confirmer qu’aucune demande n’est en attente. Si une demande est en attente, complétez la demande avec WINBIO_E_DATA_COLLECTION_IN_PROGRESS.

    Le service WinBio ou une application peut demander l’annulation d’une demande de capture en attente à tout moment en appelant des routines d’annulation Win32 telles que CancelIo, CancelIoEx ou CancelSynchronousIo. Par conséquent, les pilotes WBDI doivent également prendre en charge l’annulation.

    Le pilote gère l’annulation en appelant IWDFIoRequest ::MarkCancelable pour inscrire une interface IRequestCallbackCancel.

    Le gestionnaire programme ensuite l’appareil pour le mode de capture et retourne à partir du rappel. La demande doit rester en attente jusqu’à ce que le pilote détecte que la capture est terminée. Une fois cette demande d’E/S terminée, l’appareil peut revenir à un état inactif. Un client peut effectuer un appel initial à IOCTL_BIOMETRIC_CAPTURE_DATA pour déterminer la taille de mémoire tampon correcte pour une capture réelle.

  5. Le gestionnaire de IOCTL_BIOMETRIC_RESET doit physiquement réinitialiser l’appareil à un état connu ou inactif. Le gestionnaire de cette demande doit également annuler les E/S de collecte de données en attente et remplir la structure de WINBIO_BLANK_PAYLOAD . Le gestionnaire termine ensuite la requête. Les clients n’ont pas besoin d’appeler la réinitialisation entre les appels à IOCTL_BIOMETRIC_CAPTURE_DATA.