6

存在しないデバイスをエミュレートするWDMドライバーを作成する必要があります。SetupDiXXXO / Sの起動時、およびを介して開閉するとき、CreateFileに応答する必要があるときDeviceIoControlなどに、ドライバをロードする必要があります。

ドライバーをコーディングしましたが、XPはそれをロードすることを拒否します。システムイベントビューアは次のように述べています。

次のエラーが原因で、MyDeviceサービスを開始できませんでした。サービスが無効になっているか、有効なデバイスが関連付けられていないため、サービスを開始できません。

それを考えると、問題はINFファイルにあると思います(以下の参照)。それは...ですか?どうすれば修正できますか?

;; MyDevice.inf

[バージョン]
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


[メーカー]
%MfgName%= Mfg0

[製造0]
%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


[文字列]
ProviderName = "Acme"
MfgName = "Acme"
DeviceDesc = "Acme"
DeviceClassName="MyDeviceのデバイスクラス"
SvcDesc ="MyDeviceNTサービス"
4

1 に答える 1

4

自己回答:

以下を含むようにINFを変更しました。

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

「\ipm1」は新しく、私の目には少しブードゥーがあります。ChrisCantの「WritingWindowsWDMDeviceDrvers」の例から入手しました。

大きな変更点は、コントロールパネルの[新しいハードウェアの追加]ウィザードを使用してドライバーをインストールすることです。INFを右クリックしてインストールするだけでは不十分です。その理由は、ドライバーが制御するハードウェアを正しく見つけられないPnPマネージャーを呼び出すためだと思います。

于 2009-12-22T14:36:50.383 に答える