Algoritmo de carga de biblioteca no administrada (nativa)
Las bibliotecas no administradas se ubican y se cargan con un algoritmo que implica varias fases.
El algoritmo siguiente describe cómo se cargan las bibliotecas nativas a través de PInvoke
.
Algoritmo de la biblioteca de carga PInvoke
PInvoke
usa el algoritmo siguiente al intentar cargar un ensamblado no administrado:
Determine el elemento AssemblyLoadContext
active
. En el caso de una biblioteca de carga no administrada, el elemento AssemblyLoadContext deactive
es el que tiene el ensamblado que definePInvoke
.En el caso del elemento AssemblyLoadContext
active
, intente buscar el ensamblado en orden de prioridad por:Comprobar la memoria caché.
Llamar al delegado System.Runtime.InteropServices.DllImportResolver actual que establece la función NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver).
Llamar a la función AssemblyLoadContext.LoadUnmanagedDll en el elemento AssemblyLoadContext de
active
.Comprobar la memoria caché de la instancia de AppDomain y ejecutar la lógica de sondeo de biblioteca no administrada (nativa).
Generar el evento AssemblyLoadContext.ResolvingUnmanagedDll para el elemento AssemblyLoadContext de
active
.