Freigeben über


Unterstützung der biometrischen IOCTL-Aufrufsequenz

WBDI ist eine IOCTL-basierte Windows-Standardschnittstelle. Wenn Sie einen WBDI-Treiber schreiben, müssen Sie eine Reihe obligatorischer IOCTLs unterstützen. Sie können auch optionale IOCTLs unterstützen. Eine vollständige Liste der obligatorischen und optionalen IOCTLs finden Sie unter Biometrische IOCTLs.

Ein vom Anbieter bereitgestellter WBDI-Treiber sollte darauf vorbereitet sein, IOCTL-Anforderungen in der folgenden Reihenfolge vom Windows Biometric Service (WBS) zu empfangen. Beispiele für Handler für diese IOCTLs finden Sie unter Device.cpp in WudfBioUsbSample.

  1. Der Windows-Biometrische Dienst oder der Sensoradapter initialisiert das biometrische Gerät und überprüft, ob es einsatzbereit ist. Der Dienst oder Adapter sendet eine IOCTL_BIOMETRIC_GET_ATTRIBUTES Anforderung.

    Der Treiber empfängt einen Zeiger auf eine WINBIO_SENSOR_ATTRIBUTES-Struktur . Im Handler für diese IOCTL sollte der Treiber die relevanten Elemente dieser Struktur ausfüllen und die Anforderung abschließen, indem er IWDFIoRequest::Complete aufruft.

  2. Als Nächstes erhält der Treiber IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Der Fahrer sollte die relevanten Elemente der WINBIO_DIAGNOSTICS Struktur ausfüllen und die Anforderung ausfüllen.

  3. Wenn der Treiber angibt, dass eine Kalibrierung im SensorStatus-Member der WINBIO_DIAGNOSTICS-Struktur erforderlich ist, die von der IOCTL_BIOMETRIC_GET_SENSOR_STATUS Anforderung zurückgegeben wurde, erhält der Treiber als Nächstes eine IOCTL_BIOMETRIC_CALIBRATE Anforderung. Der Treiber muss einen Handler für diese IOCTL bereitstellen. Nach dem Kalibrieren des Geräts sollte der Rückruf eine WINBIO_CALIBRATION_INFO Struktur zurückgeben.

  4. Der Treiber kann jetzt erwarten, dass er IOCTL_BIOMETRIC_CAPTURE_DATA Anforderungen empfängt. Da jederzeit nur eine Erfassung ausstehen kann, sollte der Handler für diese Anforderung zunächst bestätigen, dass keine Anforderung aussteht. Wenn eine Anforderung aussteht, füllen Sie die Anforderung mit WINBIO_E_DATA_COLLECTION_IN_PROGRESS aus.

    Der WinBio-Dienst oder eine Anwendung kann jederzeit den Abbruch einer ausstehenden Erfassungsanforderung anfordern, indem Win32-Abbruchroutinen wie CancelIo, CancelIoEx oder CancelSynchronousIo aufgerufen werden. Daher müssen WBDI-Treiber auch den Abbruch unterstützen.

    Der Treiber verarbeitet den Abbruch, indem er IWDFIoRequest::MarkCancelable aufruft , um eine IRequestCallbackCancel-Schnittstelle zu registrieren.

    Der Handler programmiert dann das Gerät für den Erfassungsmodus und gibt vom Rückruf zurück. Die Anforderung sollte ausstehen, bis sie abgebrochen wird oder der Treiber erkennt, dass die Erfassung abgeschlossen ist. Nachdem diese E/A-Anforderung abgeschlossen wurde, kann das Gerät in den Leerlaufzustand zurückkehren. Ein Client kann einen ersten Aufruf an IOCTL_BIOMETRIC_CAPTURE_DATA tätigen, um die richtige Puffergröße für eine tatsächliche Erfassung zu bestimmen.

  5. Der Handler für IOCTL_BIOMETRIC_RESET sollte das Gerät physisch auf einen bekannten Oder Leerlaufzustand zurücksetzen. Der Handler für diese Anforderung muss auch alle ausstehenden Datensammlungs-E/A abbrechen und die WINBIO_BLANK_PAYLOAD-Struktur ausfüllen. Der Handler schließt dann die Anforderung ab. Clients müssen das Zurücksetzen zwischen Anrufen an IOCTL_BIOMETRIC_CAPTURE_DATA nicht aufrufen.