Beschränkungen für das verzögerte Laden von DLLs
Aktualisiert: November 2007
Für verzögertes Laden von Importen gelten die folgenden Einschränkungen:
Das Importieren von Daten kann nicht unterstützt werden. Dies kann umgangen werden, indem der Datenimport unter Verwendung von LoadLibrary behandelt wird (oder unter Verwendung von GetModuleHandle, sobald Sie wissen, dass die DLL von der Hilfsfunktion für verzögertes Laden geladen wurde) und GetProcAddress explizit selbst behandeln.
Das verzögerte Laden von Kernel32.dll wird nicht unterstützt. Diese DLL wird von der Hilfsfunktion für verzögertes Laden benötigt, um das verzögerte Laden durchführen zu können.
Das Binden von Einstiegspunkten, die weitergeleitet werden, wird nicht unterstützt.
Das verzögerte Laden einer DLL kann zu einem anderen Prozessverhalten führen, wenn prozessbezogene Initialisierungen im Einstiegspunkt der verzögert geladenen DLL durchgeführt werden. Andere Fälle schließen mit __declspec(thread) deklarierten, statischen lokalen Threadspeicher (TLS, Thread Local Storage) ein, der nicht behandelt wird, wenn die DLL über LoadLibrary geladen wird. Dynamischer TLS durch Verwendung von TlsAlloc, TlsFree, TlsGetValue und TlsSetValue ist in statischen oder verzögert geladenen DLLs weiterhin verfügbar.
Statische (globale) Funktionszeiger müssen nach dem ersten Aufruf der Funktion auf die importierten Funktionen erneut initialisiert werden. Dies ist erforderlich, da der Funktionszeiger bei seiner ersten Verwendung auf den Thunk zeigt.
Es gibt bei Verwendung des normalen Importmechanismus momentan keine Möglichkeit, nur das Laden bestimmter Prozeduren aus einer DLL zu verzögern.
Benutzerdefinierte Aufrufkonventionen (wie das Verwenden von Bedingungscodes bei x86-Architekturen) werden nicht unterstützt. Außerdem können Gleitkommadatentypen in Hilfsroutinen oder Hooks nicht auf RISC-Computern verwendet werden. Die Gleitkommaregister werden nicht auf jeder Plattform gespeichert. Wenn von der benutzerdefinierten Hilfsroutine oder den Hookroutinen Gleitkommawerte verwendet werden, müssen diese den Gleitkommazustand auf Computern mit Registeraufrufkonventionen mit Gleitkommaparametern vollständig speichern und wiederherstellen. Wenn Sie CRT-Funktionen aufrufen, die Gleitkommaparamenter für einen nummerischen Datenprozessorstapel (NDP) in der Hilfsfunktion enthalten, sollten Sie besondere Vorsicht beim verzögerten Laden der CRT-DLL walten lassen.