無料ブログはココログ

« ( ̄ω ̄)ゞ г(*-ω`*)┘ | トップページ | なぜだ!! »

2010年2月 3日 (水)

DLL リダイレクト

  最近では 64 ビット上で動くプログラムしか書いてない。もちろん Win32 用としても動く実行ファイルが吐けるようにもしてある。そんな状況下 DLL を直接呼び出すプログラムってしばらく書いてなかった。

  システムディレクトリ( C:\Windows\System32 等)にある DLL を呼ぶには GetSystemDirectory 関数でシステムディレクトリを取得する必要があるけど、x64 および Win32 用どちらの実行ファイルから GetSystemDirectory を使っても取得できるディレクトリは C:\Windows\System32 だった。
  ウチの PC は 64 ビットなので、このままだと Win32 用のプログラムは DLL を呼ぶことはできないはずで、本来ならば C:\Windows\SysWOW64 下の DLL が呼ばれるべきだから、 GetSystemDirectory は C:\Windows\SysWOW64 を返してもらわないと困る。

  とりあえず DLL を 呼ぶテストプログラムだけを書いて実行してみたら、GetSystemDirectory は C:\Windows\System32 を返しているが、実際に呼ばれる DLL は C:\Windows\SysWOW64 下の DLL が呼ばれていた。この辺は Windows が自動的にリダイレクトしてくれているのね。便利便利。32 ビットアプリを 64 ビット PC 上で動作させるにはこういう仕組みのが確かに効率がよさそうだ。

« ( ̄ω ̄)ゞ г(*-ω`*)┘ | トップページ | なぜだ!! »

プログラミング」カテゴリの記事