Algoritmo de carregamento de biblioteca não gerenciado (nativo)
As bibliotecas não gerenciadas são localizadas e carregadas com um algoritmo que envolve vários estágios.
O algoritmo a seguir descreve como as bibliotecas nativas são carregadas através do PInvoke
.
PInvoke
Carregar algoritmo de biblioteca
PInvoke
usa o seguinte algoritmo ao tentar carregar um assembly não gerenciado:
Determine o
active
AssemblyLoadContextarquivo . Para uma biblioteca de carga não gerenciada, oactive
AssemblyLoadContext é aquele com o assembly que define oPInvoke
.Para o
active
AssemblyLoadContext, tente encontrar a montagem em ordem de prioridade por:Verificando seu cache.
Chamando o delegado atual System.Runtime.InteropServices.DllImportResolver definido pela NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver) função.
Chamando a AssemblyLoadContext.LoadUnmanagedDll função no
active
AssemblyLoadContext.Verificar o cache da AppDomain instância e executar a lógica de sondagem da biblioteca não gerenciada (nativa).
Levantando o AssemblyLoadContext.ResolvingUnmanagedDll evento para o
active
AssemblyLoadContext.