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 l’assembly
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour