Bagikan melalui


Mendukung Urutan Panggilan IOCTL Biometrik

WBDI adalah antarmuka berbasis IOCTL standar Windows. Ketika Anda menulis driver WBDI, Anda harus mendukung sekumpulan IOCTL wajib. Anda juga dapat memilih untuk mendukung IOCTL opsional. Anda dapat menemukan daftar lengkap IOCTL wajib dan opsional di IOCTL Biometrik.

Driver WBDI yang disediakan vendor harus siap untuk menerima permintaan IOCTL dalam urutan berikut dari Windows Biometric Service (WBS). Anda dapat meninjau contoh handler untuk IOCTL ini di Device.cpp di WudfBioUsbSample.

  1. Windows Biometric Service atau adaptor sensor menginisialisasi perangkat biometrik dan memverifikasi bahwa ia siap digunakan. Layanan atau adaptor mengirimkan permintaan IOCTL_BIOMETRIC_GET_ATTRIBUTES.

    Driver menerima pointer ke struktur WINBIO_SENSOR_ATTRIBUTES. Dalam handler untuk IOCTL ini, driver harus mengisi anggota yang relevan dari struktur ini dan menyelesaikan permintaan dengan memanggil IWDFIoRequest::Complete.

  2. Selanjutnya, driver menerima IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Driver harus mengisi anggota yang relevan dari struktur WINBIO_DIAGNOSTICS dan menyelesaikan permintaan.

  3. Jika driver menunjukkan bahwa kalibrasi diperlukan di anggota SensorStatus dari struktur WINBIO_DIAGNOSTICS yang dikembalikan dari permintaan IOCTL_BIOMETRIC_GET_SENSOR_STATUS, driver berikutnya menerima permintaan IOCTL_BIOMETRIC_CALIBRATE. Driver harus menyediakan handler untuk IOCTL ini. Setelah mengkalibrasi perangkat, panggilan balik harus mengembalikan struktur WINBIO_CALIBRATION_INFO.

  4. Driver sekarang dapat mengharapkan untuk menerima permintaan IOCTL_BIOMETRIC_CAPTURE_DATA. Karena hanya satu tangkapan yang dapat ditunda kapan saja, handler untuk permintaan ini harus terlebih dahulu mengonfirmasi bahwa tidak ada permintaan yang tertunda. Jika permintaan tertunda, selesaikan permintaan dengan WINBIO_E_DATA_COLLECTION_IN_PROGRESS.

    Layanan WinBio atau aplikasi dapat meminta pembatalan permintaan pengambilan yang luar biasa kapan saja dengan memanggil rutinitas pembatalan Win32 seperti CancelIo, CancelIoEx, atau CancelSynchronousIo. Dengan demikian, driver WBDI juga harus mendukung pembatalan.

    Driver menangani pembatalan dengan memanggil IWDFIoRequest::MarkCancelable untuk mendaftarkan antarmuka IRequestCallbackCancel.

    Handler kemudian memprogram perangkat untuk mode pengambilan dan kembali dari panggilan balik. Permintaan harus tetap tertunda hingga dibatalkan atau driver mendeteksi bahwa pengambilan selesai. Setelah permintaan I/O ini selesai, perangkat dapat kembali ke status menganggur. Klien dapat melakukan panggilan awal ke IOCTL_BIOMETRIC_CAPTURE_DATA untuk menentukan ukuran buffer yang benar untuk pengambilan aktual.

  5. Handler untuk IOCTL_BIOMETRIC_RESET harus mengatur ulang perangkat secara fisik ke status yang diketahui atau diam. Handler untuk permintaan ini juga harus membatalkan I/O pengumpulan data yang tertunda dan mengisi struktur WINBIO_BLANK_PAYLOAD. Handler kemudian menyelesaikan permintaan. Klien tidak perlu memanggil reset antara panggilan ke IOCTL_BIOMETRIC_CAPTURE_DATA.