Dela via


Stöd för biometrisk IOCTL-samtalssekvens

WBDI är ett IOCTL-baserat windows-standardgränssnitt. När du skriver en WBDI-drivrutin måste du ha stöd för en uppsättning obligatoriska IOCTL:er. Du kan också välja att stödja valfria IOCTLs. Du hittar en fullständig lista över obligatoriska och valfria IOCTLs i Biometriska IOCTLs.

En wbdi-drivrutin som tillhandahålls av leverantören bör förberedas för att ta emot IOCTL-begäranden i följande ordning från Windows Biometric Service (WBS). Du kan granska exempel på hanterare för dessa IOCTLs i Device.cpp i WudfBioUsbSample.

  1. Windows Biometric Service eller sensoradaptern initierar den biometriska enheten och verifierar att den är klar för användning. Tjänsten eller adaptern skickar en IOCTL_BIOMETRIC_GET_ATTRIBUTES begäran.

    Drivrutinen tar emot en pekare till en WINBIO_SENSOR_ATTRIBUTES struktur. I hanteraren för denna IOCTL ska drivrutinen fylla i relevanta fält i den här strukturen och slutföra begäran genom att anropa IWDFIoRequest::Complete.

  2. Därefter tar drivrutinen emot IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Drivrutinen bör fylla i relevanta medlemmar i WINBIO_DIAGNOSTICS-strukturen och slutföra begäran.

  3. Om drivrutinen anger att kalibrering är nödvändig i SensorStatus medlem av den WINBIO_DIAGNOSTICS strukturen som returnerades från begäran IOCTL_BIOMETRIC_GET_SENSOR_STATUS, tar drivrutinen emot nästa IOCTL_BIOMETRIC_CALIBRATE begäran. Drivrutinen måste tillhandahålla en hanterare för denna IOCTL. När enheten har kalibrerats ska återanropet returnera en WINBIO_CALIBRATION_INFO struktur.

  4. Förare kan nu förvänta sig att ta emot IOCTL_BIOMETRIC_CAPTURE_DATA förfrågningar. Eftersom endast en upptagning kan vänta vid någon given tidpunkt bör hanteraren för den här begäran först bekräfta att ingen annan begäran väntar. Om en begäran väntar slutför du begäran med WINBIO_E_DATA_COLLECTION_IN_PROGRESS.

    WinBio-tjänsten eller ett program kan när som helst begära att en utestående avbildningsbegäran avbryts genom att anropa Win32-avbokningsrutiner som CancelIo, CancelIoExeller CancelSynchronousIo. Därför måste WBDI-drivrutiner också ha stöd för annullering.

    Drivrutinen hanterar annulleringen genom att anropa IWDFIoRequest::MarkCancelable för att registrera ett IRequestCallbackCancel--gränssnitt.

    Hanteraren programmerar sedan enheten för inspelningsläge och returnerar från callbacken. Begäran bör förbli väntande tills den har avbrutits eller drivrutinen upptäcker att inspelningen är klar. När den här I/O-begäran har slutförts kan enheten återgå till ett inaktivt tillstånd. En klient kan göra ett första anrop till IOCTL_BIOMETRIC_CAPTURE_DATA för att fastställa rätt buffertstorlek för en faktisk avbildning.

  5. Hanteraren för IOCTL_BIOMETRIC_RESET ska fysiskt återställa enheten till ett känt eller inaktivt tillstånd. Hanteraren för den här begäran måste också avbryta alla väntande datainsamlings-I/O och fylla i WINBIO_BLANK_PAYLOAD strukturen. Hanteraren slutför sedan begäran. Klienter behöver inte anropa återställning mellan anrop till IOCTL_BIOMETRIC_CAPTURE_DATA.