デバイスドライバの互換性について

はじめまして。
UMDFによるUSBデバイスドライバの開発に取り掛かることになりそうなのですが
ドライバ開発は初めてのため、ヘルプを読みながら作業しています。

ターゲットOSはXPとVista、7になるのですが、この場合同一バイナリでも
それぞれのOSで動作可能なデバイスドライバを作成することは可能なのでしょうか?
それともOSごとにビルドする必要があるのでしょうか?

同一バイナリで動作可能な場合「Build Environments」メニューからは、どのビルダを選択する必要があるのでしょうか?
これらの情報が記載されているヘルプページやサイトでも結構ですのでアドバイス頂けると幸いです。
何卒ご教授のほど、よろしくお願い致します。

hidaka@出張中です。簡

hidaka@出張中です。簡単に書きます。私も昔は疑問でした。

>この場合同一バイナリでもそれぞれのOSで動作可能なデバイスドライバを作成することは可能なのでしょうか?
>これらの情報が記載されているヘルプページやサイトでも結構ですのでアドバイス頂けると幸いです。
私の知る限りでは、Microsoftの公式情報としては、見たことはありません。

UMDF以外のドライバでどうするかの、自分の経験で対応している方法を2年ぐらい前の、インターフェース誌のWindows Vistaドライバ開発の連載に少しだけ書きました。要は、できる場合とできない場合があるという事です。

また以前(Windows Vista用WDK)では、UMDFドライバに限って言えば、どの環境でビルドしても全く同じオブジェクトができたので、結論としてはUMDFに限っては、ビルド環境は関係が無いということになっていました。MicrosoftのUMDFの開発者に聞いたので間違いありません。それで、WDK7.0.0ではどうか?というと、わかりません。

明後日、こちらでMicrosoftのUMDFの開発者にまた会うので、WDK7.0.0ではどうかを聞いておきます。

早速のアドバイス、

早速のアドバイス、ありがとうございます。

そうですか・・公式情報が無いのはつらいですね。
投稿後ヘルプを見ていると、ビルド時のオプションとしてMINIMUM_NT_TARGET_VERSIONなるものがあったりするので、
この辺りをうまく指定すれば、同一バイナリでも異なるOSでも動作するようになるのかと期待していたのですが・・
WDK7.0.0におけるUMDFのご報告をお待ちしております。

聞きました。 結論か

聞きました。

結論から言いますと、条件付で共通化は可能です。

WDMでも、KMDFでも、UMDFでも、共通バイナリで動かしたいOS用環境の中で、一番古い(低い)バージョンのビルド環境を使え。ということです。
ご質問の条件では、XP用のBuild Environmentを使ってビルドして、共通化を図ることになります。

より詳細には、後日フォローします。

>

> より詳細には、後日フォローします。
より詳細なフォローはいつになるのでしょうか?

>

> より詳細なフォローはいつになるのでしょうか?

雑多の情報をどうやってまとめようかと悩んでいます。余計な事を書くと混乱の元ですし。もう少し時間を下さい。今月中には何とかしたいです。

要点は変わりません。一般的なUSB, PCI等のWDM, KMDF, UMDFドライバで、共通バイナリでWindows XP以降で動かしたい場合は、Windows XPのビルド環境を使うということです。

なおサウンドやビデオ・カード等、XP以降でバイナリで互換性を持たせることが出来ない場合は、個別に対応させるしかありません。その場合でも、Vistaの環境でビルドする事で、同じバイナリで、Windows 7 / Windows Vista対応とさせることが出来ます。

このタイミングで追

このタイミングで追加の質問をしていいのか悩みましたが、とりあえずアップさせていただきます。

Windows XPのビルド環境でビルドしたドライバ(.sys)であれば、
Windows XP以降のOSで動作可能ということですが、

質問1. そのドライバがWindows ロゴ認証を取得していれば、他のOS(Vistaなど)にインストールする際も警告は出ないのでしょうか。

質問2. とはいっても、32bit⇔64bit間では必ずそれぞれビルドする必要がありますか。

よろしくおねがいいたします。

これを機会に、小出

これを機会に、小出しに解説します。

まず一応の確認ですが、Windows XPのビルド環境でビルドしたドライバは、全てがWindows XP以降のOSで動作可能という訳ではありません。

これからWDK 7.x.xを使用して、新規に開発するドライバで、同一バイナリでWindows XPまでの互換性を保ちたい場合、どの環境でビルドするのが良いのか?という質問に対して、Windows XPの環境を使ってビルドする。という答えを貰ったという事です。

質問1. はい。
正確には、INFファイルを含めた「ドライバ・パッケージ」にロゴ認証による署名があり、内容が改変されていなければ、ですが。

質問2. 質問の意味が良く分かりませんが、INFファイルを改変したりビルドし直したりした段階で、ロゴ認証による署名が付いていたセキュリティ・カタログファイルが無効になります。

ロゴ認証による署名は、ドライバのソースコードやバイナリに与えられるのではなく、INFファイルを含めた「ドライバ・パッケージ」に与えられる点に注意して下さい。

質問2の表現を変え

質問2の表現を変えると、同一バイナリで32bit、64bit両方で動作可能となるドライバを作ることはできるのかという質問になります。ソースコードレベルで同一となることはあっても、それぞれの環境設定でビルドが必要だと理解しています。合っていますでしょうか。
hidakaさま、ご回答ありがとうございました。

多くてメモリが少な

多くてメモリが少なく、今ではすべてのオリジナルの iPhoneはオフになって彼らのロックとはかなり控えめな価格でアップグレードすることができます。

OTOH、彼らはたぶん)、それでもできないマルチタスクのOS、おそらくストレージ少量のやや遅い全体的な体験を(より多くのコード持ってアップグレードすることができます。ユーザーの利得の違いはありません。

一方、アップルはプラットフォームをサポートする必要があります、おそらく非常に少数のエンドユーザーは、多くのではないアップグレードする気になるからだ。さらに、私は大きなシェアは子供たちに、誰が、それらをjailbrokeのT - Mo系で実行され伝承されている、賭けだとAppleの機能を気にしないでください。

我々は何iPhone HDを知っていないか、何がこの夏に提供します来ています。それも、遠くGen1の約4.0の機能をアップグレードされます気に誰も"に向かって計算を傾けることがあります。

ああ、ところで:かなり業界標準の練習。 Win6.5の携帯電話は、今日販売されて - そしておそらく、今年の残りの部分は少なくとも - ないアップグレード/ワットを秒Win7Phoneになるだろうに何電子、あるいは同じように自動車は:あなたの購入決定をあなたの現在のニーズに基づいて評価多少については、意味が母はあなたのも大人として大事にするアップグレードをしないと約束した。

、について

Matt John
samsung phones 最高です!

カタログファイルの

カタログファイルの互換性について

便乗して質問させていただきます。

互換性に関して、ドライバのバイナリやビルド環境の話が出ていますが、カタログファイルに関してはどうなのでしょうか?
ドライバパッケージに対してカタログファイルを作成するとき、
  inf2cat /driver:~~ /os:XP_x86
といったようにOSを指定すると思うのですが、XP用のカタログファイルはVista以降でも使うことはできるのでしょうか?
使うことができるとした場合、カタログファイルにSPC署名がついている場合も同様に大丈夫なのでしょうか?

以上、ご教授のほどよろしくお願いいたします。