支援生物特徵辨識 IOCTL 通話順序
WBDI 是以 Windows 標準 IOCTL 為基礎的介面。 當您撰寫 WBDI 驅動程式時,必須支援一組強制 IOCTL。 您也可以選擇支援選擇性 IOCTL。 您可以在生物特徵辨識 IOCTL 中找到 必要和選擇性 IOCTL 的完整清單。
廠商提供的WBDI驅動程式應該準備好從 Windows 生物特徵辨識服務 (WBS) 依照下列順序接收 IOCTL 要求。 您可以在 WudfBioUsbSample 的 Device.cpp中檢閱這些 IOCTLs 的處理程式範例。
Windows 生物特徵辨識服務或感測器適配卡會初始化生物特徵辨識裝置,並確認它已可供使用。 服務或配接器會傳送 IOCTL_BIOMETRIC_GET_ATTRIBUTES 要求。
驅動程式會接收WINBIO_SENSOR_ATTRIBUTES結構的指標。 在此 IOCTL 的處理程式中,驅動程式應該填入此結構的相關成員,並呼叫 IWDFIoRequest::Complete 來完成要求。
接下來,驅動程式會收到 IOCTL_BIOMETRIC_GET_SENSOR_STATUS。 驅動程式應該填入WINBIO_DIAGNOSTICS結構的相關成員,並完成要求。
如果驅動程式指出從IOCTL_BIOMETRIC_GET_SENSOR_STATUS要求傳回之WINBIO_DIAGNOSTICS結構的 SensorStatus 成員中是必要的校正,則驅動程式接下來會收到IOCTL_BIOMETRIC_CALIBRATE要求。 驅動程式必須為此 IOCTL 提供處理程式。 校正裝置之後,回呼應該會傳 回WINBIO_CALIBRATION_INFO 結構。
驅動程式現在可以預期會收到 IOCTL_BIOMETRIC_CAPTURE_DATA 要求。 因為隨時只能擱置一個擷取,因此此要求的處理程式應該先確認沒有任何要求擱置中。 如果要求擱置中,請使用 WINBIO_E_DATA_COLLECTION_IN_PROGRESS 完成要求。
WinBio 服務或應用程式可以呼叫 CancelIo、CancelIoEx 或 CancelSynchronousIo 等 Win32 取消例程,隨時要求取消未處理的擷取要求。 因此,WBDI 驅動程式也必須支援取消。
驅動程式會呼叫 IWDFIoRequest::MarkCancelable 以註冊 IRequestCallbackCancel 介面來處理取消作業。
處理程式接著會為裝置進行擷取模式的程式,並從回呼傳回。 要求應該保持擱置,直到取消或驅動程式偵測到擷取完成為止。 完成此 I/O 要求之後,裝置可以回到閑置狀態。 用戶端可能會對IOCTL_BIOMETRIC_CAPTURE_DATA進行初始呼叫,以判斷實際擷取的正確緩衝區大小。
IOCTL_BIOMETRIC_RESET的處理程式應該實際將裝置重設為已知或閑置狀態。 此要求的處理程式也必須取消任何擱置的數據收集 I/O,並填寫 WINBIO_BLANK_PAYLOAD 結構。 處理程序接著會完成要求。 用戶端不需要在呼叫IOCTL_BIOMETRIC_CAPTURE_DATA之間呼叫重設。