2016-08-23 7 views
0

私はWDK7 Toasterのバスデバイスと子デバイスが同じ.sysドライバファイルを共有しようとしています。 busenum.sysとtoaster.sysを1つのNls_ufcom.sys(bus.infとtoaster.infは両方ともサービスバイナリと同じNls_ufcom.sysを参照しています)に結合しますが、Windowsは子デバイスのエラー38(CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD)私はデバイスマネージャからドライバとしてtoaster.infを割り当てます。したがって、AddDevice()コールバックは子デバイスに対しても呼び出されません。同じ.sysドライバファイルを共有する2つの異なるクラスのWindowsデバイスを持つことは可能ですか?

私は何か間違ったことをしているのか、Windowsは本当にこれを許可していないのか分かりません。あなたから何か考えてもらいたい、ありがとう。

enter image description here

enter image description here

+0

私の経験では、WDFは開発者が複数のデバイスセットアップクラス用の単一のファンクションドライバを作成しないようにしています。 1つのデバイスクラス用のINFファイルを含むドライバの複数のコピーをいつでもインストールできます。また、ロジック全体を、生のPDO(ファンクションドライバを必要としないPDO)を生成する(仮想)バスドライバに入れることもできます。複数のデバイスクラスの下位/上位フィルタとして動作するドライバを作成できます。 –

答えて

1

私は理由を見つけます。理由は次のとおりです。私は別のサービス名をbus.infとtoaster.infで使用します。私の場合の結論から明らかなように、Windowsでは、2つのドライバサービスに同じサービスバイナリがありますが、異なるサービス名を持つことはできません。

ドライバサービス名はHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servicesのサブキーです。

bus.infとtoaster.infに同じサービス名を割り当てると、ドライバは両方のデバイスで正常にロードされます。言う

MSDN CM_PROB_DRIVER_FAILED_PRIOR_UNLOADの声明は、(Vistaの時代から)とても曖昧で誤解を招くあり、:

をさらにドライバーが一つ以上のINFで複数のINFにaddServiceディレクティブによって参照されている場合、このメッセージが表示されますがファイル。

- 重要な問題は指摘していません。

[2017-07-01] 10ヶ月後、私はWindows XP SP2から最新のWindows 10.1703にいたるまで、この共有sysトリックの作業を確認するために戻ってきます。私はこのトリックをUFCOM仮想COMポートドライバにうまく適用します。

関連する問題