2008年11月24日
Dependency Walker の使い方と日本語化
Dependency Walker の使い方が良く分からないので詳しく知りたいという要望があったので簡単に説明します。
まず、Dependency Walker自体はVisualStudioに入ってるのですが、最新版のv 2.2.6000を入手しましょう。
ちなみにこのまま使うと、英語版で、全角のフォルダ名があったときに読めないのです。「デスクトップ」が「デベハトップ」になります(^^;
まず、Dependency Walker自体はVisualStudioに入ってるのですが、最新版のv 2.2.6000を入手しましょう。
ちなみにこのまま使うと、英語版で、全角のフォルダ名があったときに読めないのです。「デスクトップ」が「デベハトップ」になります(^^;
単に、フォルダの読み書きだけしたいのならば、0x536fd にある、0580c120を0580c100に書き換えれば全角フォルダも行けるようになります。(何をしてるかというと、文字コードが 0x31〜0x5aの範囲内にある場合 0x20でOrを取ってアルファベットを小文字にしています。つまり、全角文字の2バイト目がこれに該当すると化けてしまうわけです)
ちなみに、日本語化+上の修正をやってくれる便利なソフトがあります。
DependencyWalker 日本語化+α プロジェクト
DependencyWalkerの実行ファイルがある場所にファイルを置いて実行すればいいだけです。
では、日本語化したこのソフトで実際にどう使えばいいかを検証してみましょう。
foobar2000の9.6 Beta5を実験に使います。
まず、左下のモジュールに注目してください。
砂時計がついてるのは、後からロードされるライブラリで、必ず使うとは限らないものです。(?)が突いてるのは、ファイル自体がパスに通っていないものや、存在しないものに付くマーク、赤いアイコンになってるのは実装されていない関数があるものです。
つまり、砂時計がついてないファイルに(?)や赤いアイコンがあるとそのままでは動作しないということを意味します。
ちなみに、APPHELP.DLLとMPR.DLLはWindowsXPで、SideBySideテクノロジー(色々なアプリごとにDLLのバージョンを使い分ける機能)で使うだけなのでよく(?)が出ていますが気にしなくても大丈夫です。
赤色になっているアイコンをクリックすると、実際に欠落している関数が何なのかがわかります。
この場合はShell32.dllに SHOpenFolderAndSelectItemという関数が足りないということが分かります。
中には関数名が無くて、序数しか書いていないものもありますが、これは非公開の関数で、上位のOSやサービスパックには名前がついていたりすることも少なくありません。
KDWで、動かないソフトがあったときには、ファイル名とこの関数名を報告してもらえばよいわけです。
では、KDWでshell32.dllと簡易インストールして、F5で更新してみます。
この通り、砂時計の無いアイコンのエラーはなくなりました。
ひねくれたプログラムでなければ、これで動作するわけです。
ドライバー(SYSのつくファイル)の場合はちょっと特殊で、ファイルが \system32\Drivers にあるのに、このように(?)が出てきます。
これは、Dependency Walkerが Driversフォルダをデフォルトで検索対象にしていないからです。
これは、オプション>モジュールの検索順序(Option>Configure Module Search Order)で設定します。
検索で Driversを選択した後左のディレクトリ追加を選んで少し順序を上げてやります。
このドライバは問題ないことが分かります。
XPのドライバは、SYSファイルをこのようにDependency Walkerで チェックして、問題がなければ、ほとんどはINFファイルの書き換えだけで動作するようです。
最後にちょっと便利なTipsです。
・名前を付けて保存 … どの関数が足りないかなどの情報を、直接実行ファイルを送らなくても伝えることが出来ます。
・表示>ファイル名をフルパスで表示(View>FullPaths)
…ファイル名がフルパス表示になるので、どこにあるファイルを呼んでいるのかが分かりやすくなります。
・F5 … 簡単に更新できます。
・Ctrl+C ファイル名のフルパスがコピーできます。
・プロファイラ … ファイル実行時のエラーをトレースできます(日本語版専用・上級者用)。
ちなみに、日本語化+上の修正をやってくれる便利なソフトがあります。
DependencyWalker 日本語化+α プロジェクト
DependencyWalkerの実行ファイルがある場所にファイルを置いて実行すればいいだけです。
では、日本語化したこのソフトで実際にどう使えばいいかを検証してみましょう。
foobar2000の9.6 Beta5を実験に使います。
まず、左下のモジュールに注目してください。
砂時計がついてるのは、後からロードされるライブラリで、必ず使うとは限らないものです。(?)が突いてるのは、ファイル自体がパスに通っていないものや、存在しないものに付くマーク、赤いアイコンになってるのは実装されていない関数があるものです。
つまり、砂時計がついてないファイルに(?)や赤いアイコンがあるとそのままでは動作しないということを意味します。
ちなみに、APPHELP.DLLとMPR.DLLはWindowsXPで、SideBySideテクノロジー(色々なアプリごとにDLLのバージョンを使い分ける機能)で使うだけなのでよく(?)が出ていますが気にしなくても大丈夫です。
赤色になっているアイコンをクリックすると、実際に欠落している関数が何なのかがわかります。
この場合はShell32.dllに SHOpenFolderAndSelectItemという関数が足りないということが分かります。
中には関数名が無くて、序数しか書いていないものもありますが、これは非公開の関数で、上位のOSやサービスパックには名前がついていたりすることも少なくありません。
KDWで、動かないソフトがあったときには、ファイル名とこの関数名を報告してもらえばよいわけです。
では、KDWでshell32.dllと簡易インストールして、F5で更新してみます。
この通り、砂時計の無いアイコンのエラーはなくなりました。
ひねくれたプログラムでなければ、これで動作するわけです。
ドライバー(SYSのつくファイル)の場合はちょっと特殊で、ファイルが \system32\Drivers にあるのに、このように(?)が出てきます。
これは、Dependency Walkerが Driversフォルダをデフォルトで検索対象にしていないからです。
これは、オプション>モジュールの検索順序(Option>Configure Module Search Order)で設定します。
検索で Driversを選択した後左のディレクトリ追加を選んで少し順序を上げてやります。
このドライバは問題ないことが分かります。
XPのドライバは、SYSファイルをこのようにDependency Walkerで チェックして、問題がなければ、ほとんどはINFファイルの書き換えだけで動作するようです。
最後にちょっと便利なTipsです。
・名前を付けて保存 … どの関数が足りないかなどの情報を、直接実行ファイルを送らなくても伝えることが出来ます。
・表示>ファイル名をフルパスで表示(View>FullPaths)
…ファイル名がフルパス表示になるので、どこにあるファイルを呼んでいるのかが分かりやすくなります。
・F5 … 簡単に更新できます。
・Ctrl+C ファイル名のフルパスがコピーできます。
・プロファイラ … ファイル実行時のエラーをトレースできます(日本語版専用・上級者用)。
Twitter Feedback
トラックバックURL
この記事へのコメント
1. Posted by ななし 2011年09月14日 00:30
もし宜しければお力をお貸しください。
サウンドカード「Asus XonarDG」では、
Windows2000はサポート外になっているので
ドライバを「Dependency Walker」で調べてみました。
「MPR.DLL」と「dbghelp.dll」に砂時計が付いていないのが、
多数ありました。大丈夫でしょうか?
「cmudaxp.sys」は問題なさそうでした。
それとINFファイルの書き換えとはどのようにすれば良いでしょう?
「Asus XonarDG」をWindows2000で動かす事が出来ないでしょうか?
文章が稚拙ですみません。それでは失礼します。
サウンドカード「Asus XonarDG」では、
Windows2000はサポート外になっているので
ドライバを「Dependency Walker」で調べてみました。
「MPR.DLL」と「dbghelp.dll」に砂時計が付いていないのが、
多数ありました。大丈夫でしょうか?
「cmudaxp.sys」は問題なさそうでした。
それとINFファイルの書き換えとはどのようにすれば良いでしょう?
「Asus XonarDG」をWindows2000で動かす事が出来ないでしょうか?
文章が稚拙ですみません。それでは失礼します。
2. Posted by blackwingcat 2011年09月14日 18:56
> 「MPR.DLL」と「dbghelp.dll」に砂時計が付いていないのが、
> 多数ありました。大丈夫でしょうか?
DWIファイルを見てみないことにはわかりません。
アップしてもらえれば見てみます
> 多数ありました。大丈夫でしょうか?
DWIファイルを見てみないことにはわかりません。
アップしてもらえれば見てみます
3. Posted by ななし 2011年09月15日 12:31
DWIファイルって、これでいいのでしょうか?↓
http://www1.axfc.net/uploader/File/so/69110
pass:nanasi
それでは失礼します。
http://www1.axfc.net/uploader/File/so/69110
pass:nanasi
それでは失礼します。
4. Posted by blackwingcat 2011年09月15日 17:11
見た感じだと、HsMgr.exe というのが、KDW の動的設定する必要がありそうなくらいですね。
もう一つエラーが出るファイルがありますが、そっちはVista 用ファイルだと思います。
もう一つエラーが出るファイルがありますが、そっちはVista 用ファイルだと思います。
5. Posted by ななし 2011年09月16日 22:05
このドライバはXP32とXP64の専用のはずですが
それにVista 用ファイルが、入ってる事って
あるものなのでしょうか?
KDW の動的設定って、この場合?どのようにすれば
いいのでしょうか?
このドライバのINFをお持ちではないと思うので
アップしておきます。↓
http://www1.axfc.net/uploader/File/so/69174
INFファイルの書き換えとはどのようにすれば良いでしょうか?
たくさん質問してしまって申し訳ありません。
もし宜しければお答えください。それでは失礼します。
それにVista 用ファイルが、入ってる事って
あるものなのでしょうか?
KDW の動的設定って、この場合?どのようにすれば
いいのでしょうか?
このドライバのINFをお持ちではないと思うので
アップしておきます。↓
http://www1.axfc.net/uploader/File/so/69174
INFファイルの書き換えとはどのようにすれば良いでしょうか?
たくさん質問してしまって申し訳ありません。
もし宜しければお答えください。それでは失礼します。