2017-12-28 24 views
2

現在、LoadLibrary関数とFreeLibrary関数を使用して、アプリケーションが実行されているシステムにdll(mfplat.dll)が存在するかどうかを確認しています。私の要件は、DLLがシステムに存在するかどうかをチェックすることだけであり、DLLから関数を呼び出す必要はありません。同じことを確認するより速い方法はありますか?DLLがシステムに存在するかどうかを調べる最も良い方法

+0

スピードは本当に重要ですか? –

+3

「あなたのシステム上の存在」を定義してください。システム上のどこにいても、dll検索で利用可能ですか?また、なぜあなたはチェックの必要性を感じますか?それが起こったときに、ロード障害に対処してみませんか?とにかくそれをやらなければなりません。なぜ、余分なコードを書くのですか? –

答えて

5

LoadLibraryEx()を使用し、LOAD_LIBRARY_AS_DATAFILEビットをdwFlags引数に設定することができます。 MSDNから

:この値が使用されている場合は、データファイルであるかのように

、システムは呼び出し プロセスの仮想アドレス空間にファイルをマップします。マップされたファイルを実行または実行する準備が完了していない場合は、 は実行されません。

これは、平文LoadLibrary()と比較して、大幅なスピードアップをもたらすはずです。

+3

スピードアップを超えて、dllでコードを実行するのを避けます。これはおそらくより重要な考慮事項です –

関連する問題