PB6.0 サブプロジェクトのレジストリ反映に問題が?
WinCE用のデバイスドライバを開発する場合、私たちはPBのIDEやWizardを活用せずにソースで直接記述するということをよくやります。しかしやっぱりツールがあればそれを使ったほうが良い場合もあるというのは事実です。ということで今週末にデバイスドライバをサブプロジェクトとして開発するための手順について確認作業をしていました。ところがその作業において問題が発生しているのです。
現在、私が評価している環境は以下の二つです
- WinXP SP2(日本語)+VS2005 Pro SP1(英語)+PB6.0(英語)
- WinXP SP2(日本語)+VS2005 Pro SP1(日本語)+PB6.0(英語)
そしてデバイスドライバをサブプロジェクトのDLLとして作成しています。参考までにデバイスドライバのソースコードはここからダウンロードできます。サブプロジェクトとして“Driver01”を作成し、Driver01.dllをカーネルモードドライバとして登録するものです。ドライバは“An empty subproject”として雛形を作り、ダウンロードしたファイルをコピー、登録してビルドすることでOSイメージに組み込まれます。
ところが1のVS2005(英語)ではドライバがロードされ動作するですが、2のVS2005(日本語)ではドライバがロードされません。その原因を調べるとドライバが動作するためのレジストリがVS2005(日本語)では正しく反映されていないことがわかりました。VS2005(英語)の環境では、単にレジストリファイルである“Driver01.reg”に記述された値が反映されます。ところがVS2005(日本語)ではそれがまったく反映されていないようなのです。これでは確かにドライバはロードされません。
同じ手順で別のDLLを作ってもレジストリが反映されない事は確認しました。これはもしかすると私の環境だけの問題かもしれませんが不具合の可能性もあります。もう少し調査してみますが、一応覚書ということで書いておきます。
本国のマイクロソフトのエンジニアは、WinXP Pro(日本語)上ではPB6.0は問題無いよと言っていました。でもWinXP、VS2005、PB6.0がそれぞれ日本語/英語の組み合わせによっては問題があるのかもしれません。こと開発環境においては、すべて本国版、すなわち英語版で構築したほうがいいのではないか?というのが最近の私の考え方です。少なくともすべて英語版に統一することで、本国のエンジニアが評価している環境と同じもので開発ができますからね。
« Platform Builder 6.0の小ネタ(その3) - 追試編 | Main | WinCEのデバイスドライバについて - その1 »
Comments
The comments to this entry are closed.
« Platform Builder 6.0の小ネタ(その3) - 追試編 | Main | WinCEのデバイスドライバについて - その1 »
本当にわかりやすい説明で、詳しく書いてもらってますので、大変助かります。
ありがとうございます。
感謝の意も込めて、参考までにコメントしておきます。
VSとPBの言語混在は色々と問題があるようです。
海外のある評価ボード用のアプリを作成しようとして既存のVS(日本語版)に添付CDの英語のPBを入れたら、うまくいかず、購入元に確認したら、英語と日本語を混在するとうまくBSPが作成できないのでダメだという回答をもらいました。
それで、一日がかりでアンインストールして再度日本語版をインストールしました。(>_<)
この環境でサンプルをビルドして動作確認したところ、ちゃんとドライバはロードされていましたし、レジストリも存在していました。(^_^)v
Posted by: 流れ星☆ | 2010.04.27 15:23