2009-12-22 25 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ć.