Я экспериментирую с WinDDK и пытаюсь установить системный драйвер в виртуальной коробке Windows 7 (x64). У меня есть файл .inf:
; testdriver.inf - install information file
[Version]
Signature = "$Windows NT$"
Class=System
ClassGUID={4d36e97d-e325-11ce-bfc1-08002be10318}
Provider=%tester%
DriverVer= 12/12/2012,1.0.0
[Manufacturer]
%DRV% = TestDriver.DRV
[TestDriver.DRV]
%Tst1%=Tst1.Install, *testdriver\TST1
[DestinationDirs]
Tst1.Files.Driver.NTx86=10,System32\Drivers
[SourceDisksNames]
1="Wdm1 build directory",,,
[SourceDisksFiles.x86]
testdriver.sys=1,objfre_wxp_x86\i386
[DestinationDirs]
DefaultDestDir = 12
Tst1.DriverFiles = 12 ;%windir%\system32\drivers
[DefaultInstall]
OptionDesc = %Tst1%
CopyFiles = Tst1.DriverFiles
[DefaultInstall.Services]
[DefaultUninstall]
[DefaultUninstall.Services]
[Tst1.Install.NTx86]
CopyFiles=Tst1.Files.Driver.NTx86
[Tst1.Files.Driver.NTx86]
testdriver.sys,,,%COPYFLG_NOSKIP%
[Tst1.Install.NTx86.Services]
AddService = Tst1, %SPSVCINST_ASSOCSERVICE%, Tst1.Service
[Tst1.Service]
DisplayName = %Tst1.ServiceName%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %10%\System32\Drivers\testdriver.sys
[Tst1.DriverFiles]
testdriver.sys
[Strings]
tester="Tester"
DRV="Driver Development"
Tst1="TST1"
Tst1.ServiceName="TestDriver"
SPSVCINST_ASSOCSERVICE=0x00000002 ; Driver service is associated with device being installed
COPYFLG_NOSKIP=2 ; Do not allow user to skip file
SERVICE_KERNEL_DRIVER=1
SERVICE_AUTO_START=2
SERVICE_DEMAND_START=3
SERVICE_ERROR_NORMAL=1
Драйвер построен с использованием "x64 Free Build Environment". При ручной установке драйвера на целевой платформе двоичный файл копируется в System32\drivers. Тем не менее, записи реестра не создаются, и, следовательно, драйвер не может управляться через диспетчер устройств (так как он не отображается в "Драйвера без Plug and Play"). Какие записи должны быть изменены в INF-файле для успешной установки драйвера? Кроме того, можно ли автоматизировать этот процесс, просто переместив двоичный файл в System32\drivers и программно создав правильные ключи реестра?