Condividi tramite


Supporto alla sequenza di chiamata biometrica IOCTL

WBDI è un'interfaccia basata su IOCTL standard di Windows. Quando si scrive un driver WBDI, è necessario supportare un set di IOCTLs obbligatori. È anche possibile scegliere di supportare IOCTLs facoltativi. È possibile trovare un elenco completo di IOCTL obbligatori e facoltativi in IOCTL biometrici.

Un driver WBDI fornito dal fornitore deve essere preparato per ricevere le richieste IOCTL nell'ordine seguente dal Servizio Biometrico Windows (WBS). È possibile esaminare esempi di handler per questi comandi IOCTL in Device.cpp in WudfBioUsbSample.

  1. Il servizio biometrico windows o l'adattatore sensore inizializza il dispositivo biometrico e verifica che sia pronto per l'uso. Il servizio o l'adattatore invia una richiesta IOCTL_BIOMETRIC_GET_ATTRIBUTES.

    Il driver riceve un puntatore a una struttura WINBIO_SENSOR_ATTRIBUTES. Nel gestore per questo IOCTL, il driver deve compilare i membri pertinenti di questa struttura e completare la richiesta chiamando IWDFIoRequest::Complete.

  2. Successivamente, il driver riceve IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Il driver deve compilare i membri pertinenti della struttura WINBIO_DIAGNOSTICS e completare la richiesta.

  3. Se il driver indica che la calibrazione è necessaria nel SensorStatus membro della struttura WINBIO_DIAGNOSTICS restituita dalla richiesta di IOCTL_BIOMETRIC_GET_SENSOR_STATUS, il driver riceverà una richiesta di IOCTL_BIOMETRIC_CALIBRATE. Il driver deve implementare un gestore per questo IOCTL. Dopo aver calibrato il dispositivo, il callback deve restituire una struttura WINBIO_CALIBRATION_INFO.

  4. Il driver può ora aspettarsi di ricevere IOCTL_BIOMETRIC_CAPTURE_DATA richieste. Poiché una sola acquisizione può essere in sospeso in qualsiasi momento, il gestore per questa richiesta deve prima confermare che nessuna richiesta è in sospeso. Se una richiesta è in sospeso, completare la richiesta con WINBIO_E_DATA_COLLECTION_IN_PROGRESS.

    Il servizio WinBio o un'applicazione può richiedere l'annullamento di una richiesta di acquisizione in sospeso in qualsiasi momento chiamando routine di annullamento Win32, ad esempio CancelIo, CancelIoExo CancelSynchronousIo. Di conseguenza, anche i driver WBDI devono supportare l'annullamento.

    Il driver gestisce l'annullamento chiamando IWDFIoRequest::MarkCancelable per registrare un'interfaccia IRequestCallbackCancel.

    Il gestore programma quindi il dispositivo per la modalità di acquisizione ed esce dal callback. La richiesta deve rimanere in sospeso fino a quando non viene annullata o il driver rileva che l'acquisizione è stata completata. Al termine della richiesta di I/O, il dispositivo può tornare a uno stato di inattività. Un client può effettuare una chiamata iniziale a IOCTL_BIOMETRIC_CAPTURE_DATA per determinare le dimensioni corrette del buffer per un'acquisizione effettiva.

  5. Il gestore per IOCTL_BIOMETRIC_RESET deve reimpostare fisicamente il dispositivo in uno stato noto o inattivo. Il gestore per questa richiesta deve anche annullare eventuali operazioni di I/O di raccolta dati in sospeso e compilare la struttura WINBIO_BLANK_PAYLOAD. Il gestore completa quindi la richiesta. I clienti non devono reimpostare tra le chiamate a IOCTL_BIOMETRIC_CAPTURE_DATA.