Установка биометрического драйвера
В этой статье приведено руководство по установке биометрических устройств. Примеры кода в этой статье взяты из файла WudfBioUsbSample.inx WudfBioUsbSample.
Заметка
Поставщики могут предоставить файл (INF) для установки драйвера WBDI.
Драйверы WBDI должны указывать класс "Биометрические данные". Задайте
ClassGuid
равным значению, которое соответствуетGUID_DEVCLASS_BIOMETRIC
в Devguid.h:[Version] ... Class=Biometric ClassGuid={53D29EF7-377C-4D14-864B-EB3A85769359} ...
В вашем разделе .HW укажите директивы
AddReg
, чтобы указать три раздела, содержащие записи, которые должны быть добавлены в реестр.[Biometric_Install.NT.hw] AddReg=Biometric_Device_AddReg AddReg=DriverPlugInAddReg, DatabaseAddReg
Укажите именованные разделы, упомянутые в разделе .HW. В разделе [Biometric_Device_AddReg] задаются значения для биометрического устройства, включая исключительный флаг и системное пробуждение/простой устройства. Чтобы быть распознанным в Windows Биометрической платформе, драйверы WBDI на основе UMDF должны установить значение "Монопольное" равным 1. Первые две строки раздела [Biometric_Device_AddReg] указывают права управления доступом (ACL), чтобы устройство можно было открыть только администратором или локальной системной учетной записью. При указании этих прав ACL сторонние приложения не могут открывать устройство и записывать данные отпечатков пальцев, если служба WinBio не запущена. Например:
[Biometric_Device_AddReg] HKR,,"DeviceCharacteristics",0x10001,0x0100 ; Use same security checks on relative opens HKR,,"Security",,"D:P(A;;GA;;;BA)(A;;GA;;;SY)" ; Allow generic-all access to Built-in administrators and Local system HKR,,"LowerFilters",0x00010008,"WinUsb" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND HKR,,"Exclusive",0x10001,1 HKR,,"SystemWakeEnabled",0x00010001,1 HKR,,"DeviceIdleEnabled",0x00010001,1 HKR,,"UserSetDeviceIdleEnabled",0x00010001,1 HKR,,"DefaultIdleState",0x00010001,1 HKR,,"DefaultIdleTimeout",0x00010001,5000
Драйвер WBDI, предоставляющий функциональные возможности для устаревшей (не-WBDI) биометрической системы, должен установить значение параметра Exclusive в ноль. Если это значение равно нулю, биометрическая платформа Windows не пытается контролировать устройство, и устройством нельзя управлять через WBF.
Поставщики могут иметь один двоичный файл драйвера, который может работать с устаревшими стеками и WBF, но они не могут работать одновременно. WBF будет работать только в том случае, если устройство можно открыть с эксклюзивным доступом.
Второй именованный раздел содержит значения реестра для адаптеров плагинов. В этом примере используется адаптер датчика, предоставленный Корпорацией Майкрософт, и адаптер хранилища. В этом разделе также включена поддержка входа Windows, задав значение SystemSensor:
[DriverPlugInAddReg] HKR,WinBio\Configurations,DefaultConfiguration,,"0" HKR,WinBio\Configurations\0,SensorMode,0x10001,1 ; Basic - 1, Advanced - 2 HKR,WinBio\Configurations\0,SystemSensor,0x10001,1 ; UAC/Winlogon - 1 HKR,WinBio\Configurations\0,SensorAdapterBinary,,"WinBioSensorAdapter.DLL" ; Windows built-in WBDI sensor adapter. HKR,WinBio\Configurations\0,EngineAdapterBinary,,"EngineAdapter.DLL" ; Vendor engine HKR,WinBio\Configurations\0,StorageAdapterBinary,,"WinBioStorageAdapter.DLL" ; Windows built-in storage adapter HKR,WinBio\Configurations\0,DatabaseId,,"6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50" ; Unique database GUID
Наконец, третий раздел задает следующие значения реестра для службы базы данных. Идентификатор GUID должен быть уникальным для каждой базы данных поставщика определенного формата. Например, в этом примере кода измените 6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50 на собственный уникальный GUID в INF-файле.
[DatabaseAddReg] HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},BiometricType,0x00010001,0x00000008 HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},Attributes,0x00010001,0x00000001 HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},Format,,"00000000-0000-0000-0000-000000000000" HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},InitialSize,0x00010001,0x00000020 HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},AutoCreate,0x00010001,0x00000001 HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},AutoName,0x00010001,0x00000001 HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},FilePath,,"" HKLM,System\CurrentControlSet\Services\WbioSrvc\Databases\{6E9D4C5A-55B4-4c52-90B7-DDDC75CA4D50},ConnectionString,,""
Чтобы отличить WBDI и устаревшие драйверы, поставщики должны задать оценку компонентов для драйвера в INX-файле. Оценка функции не задана в примере WudfBioUsbSample. Дополнительные сведения о настройке оценки функции см. в статье Ранжирование биометрического драйвера в Windows Update.
Сведения о файлах INX и их различиях от INF-файлов см. в использовании INX-файлов для создания INF-файлов.
Замена драйвера WBDI устаревшим драйвером
Чтобы заменить драйвер WBDI устаревшим драйвером, используйте следующую процедуру:
Закройте все активные приложения WBF.
Удалите драйвер WBDI.
Остановите службу WBF, перезапустите ее, а затем снова остановите ее.
Установите устаревший драйвер.