アンマネージド (ネイティブ) ライブラリの読み込みアルゴリズム
アンマネージド ライブラリは、さまざまな段階を伴うアルゴリズムを使用して検出され、読み込まれます。
次のアルゴリズムでは、PInvoke
によってネイティブ ライブラリがどのように読み込まれるかを説明します。
PInvoke
のライブラリ読み込みアルゴリズム
PInvoke
では、アンマネージド アセンブリを読み込むときに、次のアルゴリズムが使用されます。
active
AssemblyLoadContext を決定します。 アンマネージド ライブラリ読み込みの場合、active
AssemblyLoadContext が、PInvoke
を定義するアセンブリを持っています。active
AssemblyLoadContext について、次の優先順位に従ってアセンブリを検索します。キャッシュを調べます。
NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver) 関数によって設定された現在の System.Runtime.InteropServices.DllImportResolver デリゲートを呼び出します。
active
AssemblyLoadContext で AssemblyLoadContext.LoadUnmanagedDll 関数を呼び出します。AppDomain インスタンスのキャッシュを確認し、アンマネージ (ネイティブ) ライブラリプローブ ロジックを実行します。
active
AssemblyLoadContext の AssemblyLoadContext.ResolvingUnmanagedDll イベントを発生させます。
.NET