Estou experimentando o WinDDK e tentando instalar um driver de sistema em uma caixa virtual do Windows 7 (x64). Eu tenho um arquivo .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
O driver é criado usando o "Ambiente de compilação livre x64". Ao instalar manualmente o driver na plataforma de destino, o binário é copiado para System32 \ drivers. No entanto, as entradas de registro não são criadas e, portanto, o driver não pode ser gerenciado por meio do gerenciador de dispositivos (pois ele não aparece nos "Drivers não Plug and Play"). Quais entradas devem ser modificadas no arquivo .inf para instalar o driver com êxito? Além disso, esse processo pode ser automatizado simplesmente movendo o binário para System32 \ drivers e criando as chaves de registro adequadas programaticamente?