2009-12-22 10 views
6

Potrzebuję utworzyć sterownik WDM, który emuluje urządzenie, które nie jest obecne. Kierowca musi być załadowany po O/S buty, otwierane i zamykane przez SetupDiXXX i CreateFile, musi odpowiedzieć na DeviceIoControl itpJak mogę zainstalować sterownik systemu Windows, który nie dotyka sprzętu?

mam sterownik kodowany, ale XP nie chce go załadować. Przeglądarka zdarzeń systemowych mówi:

The MyDevice service failed to start due to the following error: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

Biorąc pod uwagę, myślę, że problem jest w pliku inf (odniesienia poniżej). Czy to jest? Jak mam to naprawić?

 
;; 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" 
+1

Nie znam odpowiedzi, ale projekty takie jak emulator modemu null (http://com0com.sourceforge.net/) wskazują, że jest to możliwe. Być może mógłbyś coś zebrać, przeglądając ten projekt? –

+0

Sterownik com0com jest zbliżony do tego, czego potrzebowałem, ale nie jest w 100% rozwiązaniem: musiałem też zainstalować sterownik z panelu sterowania "Dodaj nowy sprzęt". Kliknięcie prawym przyciskiem myszy, instalacja INF nie była wystarczająca. – Clay

Odpowiedz

4

Własna odpowiedział:

Zmieniłem INF zawierać następujące elementy:

[Mfg0] %DeviceDesc%=MyDevice_DDI, *MyDevice\ipm1

"\ ipm1" jest nowy i trochę voodoo w moich oczach. Dostałem go z przykładu w "Pisanie Windows WDM Device Drvers" autorstwa Chrisa Canta.

Duża zmiana polega na użyciu kreatora "Dodaj nowy sprzęt" z panelu sterowania w celu zainstalowania sterownika. Kliknięcie prawym przyciskiem myszy instalowanie INF nie wystarczy. Podejrzewam, że powodem jest to, że wywołuje on menedżera PnP, który nieprawidłowo znajduje sprzęt, który sterownik może kontrolować.

Powiązane problemy