관리되지 않는(네이티브) 라이브러리 로드 알고리즘
관리되지 않는 라이브러리는 다양한 단계를 포함하는 알고리즘으로 배치되고 로드됩니다.
다음 알고리즘에서는 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