Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
WBDI — это стандартный интерфейс на основе IOCTL Windows. При написании драйвера WBDI необходимо поддерживать набор обязательных управляющих кодов ввода-вывода. Кроме того, вы можете выбрать поддержку необязательных IOCTL. Полный список обязательных и необязательных IOCTLs можно найти в разделе Biometric IOCTLs.
Предоставленный поставщиком драйвер WBDI должен быть готов к получению запросов IOCTL в следующем порядке из биометрической службы Windows (WBS). Примеры обработчиков для этих IOCTL-кодов можно просмотреть в Device.cpp в WudfBioUsbSample.
Биометрические службы Windows или адаптер датчика инициализирует биометрическое устройство и проверяет, готов ли он к использованию. Служба или адаптер отправляет запрос IOCTL_BIOMETRIC_GET_ATTRIBUTES.
Драйвер получает указатель на структуру WINBIO_SENSOR_ATTRIBUTES. В обработчике этого IOCTL драйвер должен заполнить соответствующие члены этой структуры и завершить запрос, выполнив вызов IWDFIoRequest::Complete.
Затем драйвер получает IOCTL_BIOMETRIC_GET_SENSOR_STATUS. Драйвер должен заполнить соответствующие члены структуры WINBIO_DIAGNOSTICS и завершить запрос.
Если драйвер указывает, что калибровка необходима в элементе SensorStatus элемента структуры WINBIO_DIAGNOSTICS, возвращенной из запроса IOCTL_BIOMETRIC_GET_SENSOR_STATUS, драйвер затем получает запрос IOCTL_BIOMETRIC_CALIBRATE. Драйвер должен предоставить обработчик для этого IOCTL. После калибровки устройства обратный вызов должен вернуть WINBIO_CALIBRATION_INFO структуру.
Теперь драйвер может ожидать получения IOCTL_BIOMETRIC_CAPTURE_DATA запросов. Так как только одна запись может находиться в ожидании в любое время, обработчик этого запроса сначала должен подтвердить, что запрос не ожидается. Если запрос находится в ожидании, завершите его со статусом WINBIO_E_DATA_COLLECTION_IN_PROGRESS.
Служба WinBio или приложение может запрашивать отмену незавершенного запроса записи в любое время путем вызова подпрограмм отмены Win32, таких как CancelIo, CancelIoExили CancelSynchronousIo. Таким образом, драйверы WBDI также должны поддерживать отмену.
Драйвер обрабатывает отмену путем вызова IWDFIoRequest::MarkCancelable для регистрации интерфейса IRequestCallbackCancel.
Затем обработчик программирует устройство в режим захвата и возвращается из обратного вызова. Запрос должен оставаться в ожидании, пока не будет отменен или пока драйвер не обнаружит, что захват завершен. После завершения этого запроса ввода-вывода устройство может вернуться в состояние простоя. Клиент может выполнить первоначальный вызов IOCTL_BIOMETRIC_CAPTURE_DATA, чтобы определить правильный размер буфера для фактического захвата.
Обработчик для IOCTL_BIOMETRIC_RESET должен физически сбросить устройство в известное состояние или состояние простоя. Обработчик этого запроса также должен отменить все ожидающие операции ввода-вывода по сбору данных и заполнить структуру WINBIO_BLANK_PAYLOAD. Затем обработчик завершает запрос. Клиентам не нужно вызывать функцию сброса между вызовами IOCTL_BIOMETRIC_CAPTURE_DATA.