1

DirectX9には次のような複数のDLLバージョンがあることがわかります

  • d3d9.dll
  • d3d9_25.dll
  • d3d9_42.dll
  • d3d9_43.dll

違いは何ですか、どうすればそれを検出できますか?私はいつもを使用していますが、アプリケーションがを使用しGetModuleHandle("d3d9.dll");ている場合d3d9_43.dll、コードはアプリケーションがDirectXを使用していることを検出しませんか?すべてのDLLバージョンをハードコーディングせずにそれを検出するにはどうすればよいですか?

4

1 に答える 1

3

コードで D3D9 が使用されている場合d3d9.dll、ある時点で常に使用されます。通常、これはインポート テーブルにありますが、動的にリンクできます ( LoadLibrary)。d3d9.dllは、D3D (および必要に応じて COM) の初期化コードを提供し、エクスポートDirect3DCreate9して新しいIDirect3D9Object.

d3d9.dllはバージョンに関係なく使用されるため、唯一のパラメーターとしてを渡すD3D_SDK_VERSIONことでバージョンを指定します。Direct3DCreate9これは、DLL 名ではなく、使用するバージョンを示します。

最もよく見られる番号付きのファイルは、D3D Xファイルです。これらはバージョン管理されており、_43 は 2010 年 6 月の SDK を参照しています (SDK リリースごとに 1 つあると思います)。プログラムが D3DX で提供されるヘルパー関数を必要とする場合、通常、SDK の最新バージョンがリンクされ、番号によってそれらが分離されます。

D3DX の一部ではない D3D9_[number] ファイルは、同じシステムに従っており (そして、SDK バージョンと番号の関係が同じである可能性があります)、同様にバージョン固有の機能を提供します。

これは使用されていないとは言えd3d9.dllません。圧倒的多数のソフトウェアがそのファイルを使用しています (実際、使用していない D3D9 アプリを私は個人的に見たことがありません)。D3D9.dll に対してリンクし、SDK バージョンを渡すことは、D3D9 を使用するための適切で推奨される方法です。テストは安全で信頼性が高く、バージョンを確認する最も簡単な方法は、への呼び出しをインターセプトすることDirect3DCreate9です。

于 2011-09-23T00:49:49.840 に答える