Partager via


Contraintes relatives aux DLL à chargement différé

Il existe des contraintes liées au chargement différé des importations.

  • Les importations de données ne peuvent pas être prises en charge. Une solution consiste à gérer vous-même explicitement l'importation de données à l'aide de LoadLibrary (ou GetModuleHandle si vous savez que l'assistance de chargement différé a déjà chargé la DLL) et GetProcAddress.

  • La DLL de chargement différé Kernel32.dll n'est pas prise en charge. Cette DLL est nécessaire pour que les routines d'assistance de chargement différé puissent effectuer le chargement différé.

  • La liaison des points d'entrée transmis n'est pas prise en charge.

  • Le chargement différé d'une DLL peut générer un comportement du processus différent si des initialisations intervenant via des processus se produisent dans le point d'entrée de la DLL à chargement différé. Parmi les autres cas figure le stockage local de threads (TLS, Thread Local Storage) statique, déclaré à l'aide de __declspec(thread), qui n'est pas géré lorsque la DLL est chargée via LoadLibrary. Le TLS dynamique, grâce à TlsAlloc, TlsFree, TlsGetValue et TlsSetValue est toujours disponible pour une utilisation dans les DLL statiques ou à chargement différé.

  • Les pointeurs fonction statiques (globaux) doivent être réinitialisés en fonctions importées après le premier appel à la fonction. Cela est dû au fait que la première utilisation du pointeur fonction consiste à pointer vers le thunk.

  • Il n'existe actuellement aucun moyen de différer le chargement sélectif de certaines procédures spécifiques à partir d'une DLL tout en utilisant le mécanisme d'importation normal.

  • Les conventions d'appel personnalisées (telles que l'utilisation de codes sur les architectures x86) ne sont pas prises en charge. Vous ne pouvez pas non plus utiliser les types de données à virgule flottante dans n'importe quelle routine d'assistance ou n'importe quel raccordement sur les ordinateurs RISC. Les registres à virgule flottante ne sont enregistrés sur aucune plateforme. Si vos routines de raccordement ou votre routine d'assistance personnalisée utilisent les types à virgule flottante, elles doivent enregistrer et rétablir complètement l'état virgule flottante sur les ordinateurs qui inscrivent les conventions d'appel à l'aide des paramètres à virgule flottante. Lors du chargement différé de la DLL CRT, soyez prudent si vous appelez des fonctions CRT qui prennent les paramètres à virgule flottante sur une pile NDP (Numeric Data Processor) dans la fonction d'assistance.

Voir aussi

Concepts

Prise en charge de l'éditeur de liens pour les DLL à chargement différé