Algorithme de chargement de bibliothèque non managée (native)
Les bibliothèques non managées sont chargées à l’aide d’un algorithme impliquant différentes étapes.
L’algorithme suivant décrit comment les bibliothèques natives sont chargées via PInvoke
.
Algorithme de bibliothèque de chargement PInvoke
PInvoke
utilise l’algorithme suivant lors de la tentative de chargement d’un assembly non managé :
Déterminez le
active
AssemblyLoadContext. Pour une bibliothèque de charge non managée, AssemblyLoadContextactive
définit avec l’assembly lePInvoke
.Pour le
active
AssemblyLoadContext, essayez de trouver l’assembly dans l’ordre de priorité :Vérification de son cache.
Appel du délégué actuel System.Runtime.InteropServices.DllImportResolver défini par la fonction NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver).
Appel de la fonction AssemblyLoadContext.LoadUnmanagedDll sur AssemblyLoadContext
active
.Vérification du cache de l’instance AppDomain et exécution de la logique de détection de bibliothèque non managée (native).
Déclenchement de l’événement AssemblyLoadContext.ResolvingUnmanagedDll pour
active
AssemblyLoadContext.