1

Я пытаюсь получить мини-фильтр от Microsoft для установки и правильной работы. Я запустил новый пустой проект драйвера ядра в VS2013, скомпилировал драйвер и протестировал его подпись.

Я могу использовать утилиту wdreg.exe для успешной установки драйвера, и я поставил тест DbgPrint в начале функции DriverEntry(), и я могу прочитать его с помощью DbgView, чтобы драйвер установился нормально. Также с помощью wdreg.exe для установки драйвера создается именованная служба Wdf01000, а с помощью sc-запроса Wdf01000 я могу просматривать его работающий. Использование fltmc.exe для загрузки или просмотра экземпляров дает странные результаты.

Microsoft говорит, что для его установки я должен щелкнуть правой кнопкой мыши по файлу .inf и нажать «Установить», и когда я это сделаю, Windows скажет мне: «Выбранный файл .inf не поддерживает этот метод установки». Вставлена копия моего INF-файла, сгенерированного VS2013.

Может кто-нибудь сказать мне правильный способ установить драйвер minispy, запустить драйвер minispy и подключить его к файловой системе на 64-разрядной Win7/Win8? Спасибо

[Version]
Signature="$WINDOWS NT$"
Class=Sample ; TODO: edit Class
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid
Provider=%ManufacturerName%
CatalogFile=MiniSpyDev.cat  
DriverVer= ; TODO: set DriverVer in stampinf property pages

[DestinationDirs]
DefaultDestDir = 12

; ================= Class section =====================

[ClassInstall32]
Addreg=SampleClassReg

[SampleClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-5

[SourceDisksNames]
1 = %DiskName%,,,""

[SourceDisksFiles]
MiniSpyDev.sys  = 1,,

;*****************************************
; Install Section
;*****************************************

[Manufacturer]
%ManufacturerName%=Standard,NT$ARCH$

[Standard.NT$ARCH$]
%MiniSpyDev.DeviceDesc%=MiniSpyDev_Device, Root\MiniSpyDev ; TODO: edit hw-id

[MiniSpyDev_Device.NT]
CopyFiles=Drivers_Dir

[Drivers_Dir]
MiniSpyDev.sys

;-------------- Service installation
[MiniSpyDev_Device.NT.Services]
AddService = MiniSpyDev,%SPSVCINST_ASSOCSERVICE%, MiniSpyDev_Service_Inst

; -------------- MiniSpyDev driver install sections
[MiniSpyDev_Service_Inst]
DisplayName    = %MiniSpyDev.SVCDESC%
ServiceType    = 2               ; SERVICE_KERNEL_DRIVER
StartType      = 0               ; 
ErrorControl   = 1               ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\MiniSpyDev.sys
LoadOrderGroup = Extended Base

;
;--- MiniSpyDev_Device Coinstaller installation ------
;

[DestinationDirs]
MiniSpyDev_Device_CoInstaller_CopyFiles = 11

[MiniSpyDev_Device.NT.CoInstallers]
AddReg=MiniSpyDev_Device_CoInstaller_AddReg 
CopyFiles=MiniSpyDev_Device_CoInstaller_CopyFiles

[MiniSpyDev_Device_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000,     "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"

[MiniSpyDev_Device_CoInstaller_CopyFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll

[SourceDisksFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with               SourceDisksNames

[MiniSpyDev_Device.NT.Wdf]
KmdfService =  MiniSpyDev, MiniSpyDev_wdfsect
[MiniSpyDev_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$

[Strings]
SPSVCINST_ASSOCSERVICE= 0x00000002
ManufacturerName="" ; TODO: add ManufacturerName
ClassName="Samples" ; TODO: edit ClassName
DiskName = "MiniSpyDev Installation Disk"
MiniSpyDev.DeviceDesc = "MiniSpyDev Device"
MiniSpyDev.SVCDESC = "MiniSpyDev Service"

2 ответа2

0

Итак, ваш драйвер работает, отлично. Образец Minispy FSFD состоит из двух частей.

Но давайте вернемся немного назад. Theat INF не содержит DefaultInstall или DefaultInstall.Services » - обязательное условие для использования метода, который вы пытались (щелкните правой кнопкой мыши + "Установить").

Чтобы узнать, какая команда выполняется, просмотрите команду HKCR\inffile\shell\Install\command (в моем случае %SystemRoot%\System32\InfDefaultInstall.exe "%1"). Это, эффективно использует setupapi.dll InstallHinfSection попытка установки. То же самое может быть достигнуто с помощью rundll32.exe соответствии с этой статьей.

Догадываясь о происхождении примера (WDK), я, вероятно, попытался бы установить его с помощью dpinst.exe который находится, например, в папке redist\DIFx\dpinst WDK для Windows 7 SP1. Но так как вам уже удалось установить драйвер, это не проблема. Водитель явно работает.

В любом случае, вы должны понимать, что только то, что вы видите отладочный вывод DriverEntry() , не означает, что драйвер фильтра подключен к каким-либо томам. На самом деле в документации для Minispy прямо говорится, что вам нужна утилита пользовательского режима (хотя ничего не говорится о службе Windows). И когда я смотрю на пример кода, я ожидаю получить мини-FSFD с именем minispy.sys и консольное приложение с именем minispy.exe из сборки. Предполагается, что последний контролирует первый, включая контроль присоединения к томам (для получения подробной информации обратитесь к InterpretCommand() внутри mspyUser.c ). Например, команда a для присоединения, d для отсоединения и l для вывода списка устройств (томов).


Я не знаю, почему вы использовали wdreg.exe , но результат выглядит так, как будто он установил какой-то драйвер пользовательского режима (WDF/WUDF)?! Это драйвер режима ядра, поэтому естественно, что это не сработает.

0

Вам нужно создать .cat-файл на основе inf, а затем подписать .cat. Существует инструмент под названием inf2cat, который создает кота, а затем просто использует signtool для его подписи. После этого он должен установить без проблем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .