共用方式為


支援生物特徵辨識 IOCTL 通話順序

WBDI 是以 Windows 標準 IOCTL 為基礎的介面。 當您撰寫 WBDI 驅動程式時,必須支援一組強制 IOCTL。 您也可以選擇支援選擇性 IOCTL。 您可以在生物特徵辨識 IOCTL 中找到 必要和選擇性 IOCTL 的完整清單。

廠商提供的WBDI驅動程式應該準備好從 Windows 生物特徵辨識服務 (WBS) 依照下列順序接收 IOCTL 要求。 您可以在 WudfBioUsbSample 的 Device.cpp中檢閱這些 IOCTLs 的處理程式範例。

  1. Windows 生物特徵辨識服務或感測器適配卡會初始化生物特徵辨識裝置,並確認它已可供使用。 服務或配接器會傳送 IOCTL_BIOMETRIC_GET_ATTRIBUTES 要求。

    驅動程式會接收WINBIO_SENSOR_ATTRIBUTES結構的指標 在此 IOCTL 的處理程式中,驅動程式應該填入此結構的相關成員,並呼叫 IWDFIoRequest::Complete 來完成要求。

  2. 接下來,驅動程式會收到 IOCTL_BIOMETRIC_GET_SENSOR_STATUS。 驅動程式應該填入WINBIO_DIAGNOSTICS結構的相關成員,並完成要求。

  3. 如果驅動程式指出從IOCTL_BIOMETRIC_GET_SENSOR_STATUS要求傳回之WINBIO_DIAGNOSTICS結構的 SensorStatus 成員是必要的校正,則驅動程式接下來會收到IOCTL_BIOMETRIC_CALIBRATE要求。 驅動程式必須為此 IOCTL 提供處理程式。 校正裝置之後,回呼應該會傳 回WINBIO_CALIBRATION_INFO 結構。

  4. 驅動程式現在可以預期會收到 IOCTL_BIOMETRIC_CAPTURE_DATA 要求。 因為隨時只能擱置一個擷取,因此此要求的處理程式應該先確認沒有任何要求擱置中。 如果要求擱置中,請使用 WINBIO_E_DATA_COLLECTION_IN_PROGRESS 完成要求。

    WinBio 服務或應用程式可以呼叫 CancelIo、CancelIoEx CancelSynchronousIoWin32 取消例程,隨時要求取消未處理的擷取要求。 因此,WBDI 驅動程式也必須支援取消。

    驅動程式會呼叫 IWDFIoRequest::MarkCancelable 以註冊 IRequestCallbackCancel 介面來處理取消作業。

    處理程式接著會為裝置進行擷取模式的程式,並從回呼傳回。 要求應該保持擱置,直到取消或驅動程式偵測到擷取完成為止。 完成此 I/O 要求之後,裝置可以回到閑置狀態。 用戶端可能會對IOCTL_BIOMETRIC_CAPTURE_DATA進行初始呼叫,以判斷實際擷取的正確緩衝區大小。

  5. IOCTL_BIOMETRIC_RESET的處理程式應該實際將裝置重設為已知或閑置狀態。 此要求的處理程式也必須取消任何擱置的數據收集 I/O,並填寫 WINBIO_BLANK_PAYLOAD 結構。 處理程序接著會完成要求。 用戶端不需要在呼叫IOCTL_BIOMETRIC_CAPTURE_DATA之間呼叫重設。