Нужно ли создавать тесты HCK и HLK для файловых драйверов .inf?

У нас есть аппаратное устройство, которое используется многими клиентами. Мы поддерживаем Windows 7 - 10 ОС. В комплект поставки этого устройства входят драйвер и программное обеспечение. Устройство построено в Китае, в конечном итоге они используют Cypress Драйвер USB. Файл .inf можно найти ниже. Затем китайская компания добавляет некоторые ссылки на свое собственное устройство в файл .inf, что волшебным образом заставляет его работать в сочетании с их программным обеспечением.

Мой опыт не связан с C++ или какой-либо другой разработкой, связанной с аппаратным обеспечением. Теперь у нас есть клиенты, получающие ошибку кода 52 при установке и подключении драйвера.

Windows не может проверить цифровую подпись для этого файла. В результате недавнего изменения оборудования или программного обеспечения мог быть установлен файл с неправильной подписью или поврежденный, либо это могло быть вредоносное ПО из неизвестного источника.

Итак, после долгих поисков в Google кажется, что китайская компания не соблюдает последние стандарты для драйверов. В более новых устройствах включена безопасная загрузка, которая блокирует драйверы, которые не подписаны правильно.

Теперь меня интересует несколько вещей:

  • Потребуется ли получение моего драйвера через различные тесты HCK/HLK/WLK? Мой драйвер — это просто файл .inf, файл .sys и сгенерированный файл .cat.
  • Будет ли достаточно создать файл .cab с помощью makecab?
  • Является ли мой драйвер на самом деле драйвером режима ядра или драйвером пользовательского режима?
  • Это, конечно, будет проверено: но решит ли уже эту проблему подписание файла cat сертификатом EV?

Прохождение теста HCK и HLK кажется большой работой для простого файла .inf. Хотя рекомендации довольно ясны, я не совсем уверен, есть ли определенные вещи, которые мне не нужно делать в моем сценарии.

Код INF-файла:

; Installation INF for the Cypress Generic USB Driver for Windows 2000
; Processor support for x86 based platforms.
;
; (c) Copyright 2011 Cypress Semiconductor Corporation
;

[Version]
Signature="$WINDOWS NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
provider=%CYUSB_Provider%
CatalogFile=CYUSB.cat
DriverVer=10/17/2011,3.4.7.000

[SourceDisksNames]
1=%CYUSB_Install%,,,

[SourceDisksFiles]
CYUSB.sys = 1

[DestinationDirs]
CYUSB.Files.Ext = 10,System32\Drivers

[ControlFlags]
ExcludeFromSelect = *

[Manufacturer]
%CYUSB_Provider%=Device,NT,NTx86,NTamd64

;for all platforms
[Device]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for windows 2000 non intel platforms
[Device.NT]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for x86 platforms
[Device.NTx86]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


;for x64 platforms
[Device.NTamd64]
;%VID_XXXX&PID_XXXX.DeviceDesc%=CyUsb, USB\VID_XXXX&PID_XXXX


[CYUSB]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.Services]
Addservice = CYUSB,2,CYUSB.AddService

[CYUSB.NT]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NT.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NT.Services]
Addservice = CYUSB,2,CYUSB.AddService


[CYUSB.NTx86]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NTx86.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NTx86.Services]
Addservice = CYUSB,2,CYUSB.AddService

[CYUSB.NTamd64]
CopyFiles=CYUSB.Files.Ext
AddReg=CyUsb.AddReg

[CYUSB.NTamd64.HW]
AddReg=CYUSB.AddReg.Guid

[CYUSB.NTamd64.Services]
Addservice = CYUSB,2,CYUSB.AddService


[CYUSB.AddReg]
; Deprecating - do not use in new apps to identify a CYUSB driver
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,CYUSB.sys
; You may optionally include a check for DriverBase in your application to check for a CYUSB driver
HKR,,DriverBase,,CYUSB.sys
HKR,"Parameters","MaximumTransferSize",0x10001,4096
HKR,"Parameters","DebugLevel",0x10001,2
HKR,,FriendlyName,,%CYUSB_Description%

[CYUSB.AddService]
DisplayName    = %CYUSB_Description%
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary  = %10%\System32\Drivers\CYUSB.sys
AddReg         = CYUSB.AddReg
LoadOrderGroup = Base

[CYUSB.Files.Ext]
CYUSB.sys

[CYUSB.AddReg.Guid]
HKR,,DriverGUID,,%CYUSB.GUID%

[Strings]
CYUSB_Provider    = "Cypress"
CYUSB_Company     = "Cypress Semiconductor Corporation"
CYUSB_Description = "Cypress Generic USB Driver"
CYUSB_DisplayName = "Cypress USB Generic"
CYUSB_Install     = "Cypress CYUSB Driver Installation Disk"
VID_XXXX&PID_XXXX.DeviceDesc="Cypress USB Generic Driver (3.4.7.000)"
CYUSB.GUID="{AE18AA60-7F6A-11d4-97DD-00010229B959}"
CYUSB_Unused      = "."

person CularBytes    schedule 28.03.2017    source источник


Ответы (1)


Microsoft продолжает добавлять препятствия, вам, возможно, придется подписать их на их портале разработки. и вам нужен сертификат EV. для регистрации. Существует также разница между чистой установкой и обновлением, когда речь идет об обеспечении безопасной загрузки!

Я бы порекомендовал вам прочитать или присоединиться к списку рассылки OSR, в нем есть несколько потоки сделки с проблемами подписи Windows 10 и SHA2.

Их блог может тоже быть полезным.

person Anders    schedule 28.03.2017
comment
Привет, спасибо за ваш ответ. Я уже подписался с сертификатом EV, и я мог бы проводить тесты HCK, поэтому темы и статья не очень актуальны. Мне просто интересно, можно ли проводить тесты HCK/HLK/WLK с файлом .inf. См. также другие вопросы, которые я упомянул. - person CularBytes; 03.04.2017