Pergunta

Preciso criar um driver WDM que emula um dispositivo que não está presente. O motorista precisa ser carregado quando as botas O/S, abertas e fechadas via SetupDiXXX e CreateFile, precisa responder a DeviceIoControl, etc.

Eu tenho o driver codificado, mas o XP se recusa a carregá -lo. O Visualizador de Eventos do Sistema diz:

O serviço MyDevice falhou ao iniciar devido ao seguinte erro: o serviço não pode ser iniciado, porque está desativado ou porque não possui dispositivos habilitados associados a ele.

Dado isso, acho que o problema está no arquivo INF (referência abaixo). É isso? Como devo consertar isso?

;; MyDevice.inf

[Version]
Signature="$Windows 95$"

Class=MyDeviceDeviceClass
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}
Provider=%ProviderName%
DriverVer= 12/21/2009,1.0.0.1

[ClassInstall32]
Addreg=Class_AddReg

[Class_AddReg]
HKR,,,,%DeviceClassName%
HKR,,Icon,,"-18"

[DestinationDirs]
MyDevice_Files_Driver = 10,System32\Drivers


[Manufacturer]
%MfgName%=Mfg0

[Mfg0]
%DeviceDesc%=MyDevice_DDI, *MyDevice


[MyDevice_DDI]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_9X_AddReg


[MyDevice_DDI.NT]
CopyFiles=MyDevice_Files_Driver
AddReg=MyDevice_NT_AddReg

[MyDevice_DDI.NT.Services]
Addservice = MyDevice, 0x00000002, MyDevice_AddService

[MyDevice_AddService]
DisplayName    = %SvcDesc%
ServiceType    = 1
StartType      = 3
ErrorControl   = 1
ServiceBinary  = %10%\System32\Drivers\MyDevice.sys

[MyDevice_NT_AddReg]
HKLM, "System\CurrentControlSet\Services\MyDevice\Parameters","BreakOnEntry", 0x00010001, 0

[MyDevice_Files_Driver]
MyDevice.sys


[Strings]
ProviderName="Acme"
MfgName="Acme"
DeviceDesc="Acme"
DeviceClassName="Device class for MyDevice"
SvcDesc="MyDevice NT service"
Foi útil?

Solução

Auto -respondido:

Eu mudei o inf para incluir o seguinte:

Mfg0] %deviceSc %= mydevice_ddi, *myDevice ipm1

O " ipm1" é novo e um pouco de vodu aos meus olhos. Recebi isso de um exemplo em "Window Windows WDM Disposited Dvers", de Chris Cant.

A grande mudança é usar o assistente "Adicionar novo hardware" no painel de controle para instalar o driver. Clique com o botão direito do mouse na instalação do INF não é suficiente. Suspeito que o motivo seja que ele invoca o gerente do PNP, que não encontra corretamente o hardware para o controle do driver.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top