LoadLibrary und AfxLoadLibrary

Prozesse rufen LoadLibrary (oder AfxLoadLibrary) auf, um eine explizite Verknüpfung mit einer DLL herzustellen. Wenn der Aufruf erfolgreich ist, ordnet die Funktion die angegebene DLL im Adressbereich des aufrufenden Prozesses zu und gibt ein Handle für die DLL zurück. Dieses Handle kann zusammen mit anderen Funktionen für die explizite Verknüpfung verwendet werden, z. B. GetProcAddressund FreeLibrary.

LoadLibrary versucht, die DLL mithilfe derselben Suchfolge aufzufinden, die für die implizite Verknüpfung verwendet wird. Wenn das System die DLL nicht finden kann oder die Einstiegspunktfunktion FALSE zurückgibt, wird von LoadLibrary zurückgegeben. Wenn im Aufruf von LoadLibrary ein DLL-Modul angegeben ist, das bereits im Adressraum des aufrufenden Prozesses zugeordnet ist, gibt die Funktion einfach ein Handle für die DLL zurück und erhöht den Verweiszähler des Moduls.

Wenn die DLL über eine Einstiegspunktfunktion verfügt, ruft das Betriebssystem die Funktion im Kontext des Threads auf, durch den LoadLibrary aufgerufen wurde. Die Einstiegspunktfunktion wird nicht aufgerufen, wenn die DLL bereits an den Prozess angefügt ist, da es einen früheren Aufruf von LoadLibrary ohne entsprechenden Aufruf der FreeLibrary-Funktion gegeben hat.

Für MFC-Anwendungen, die Erweiterungs-DLLs laden, wird empfohlen, AfxLoadLibrary statt LoadLibrary zu verwenden. AfxLoadLibrary behandelt die Threadsynchronisierung vor dem Aufruf von LoadLibrary. Die Schnittstelle (Funktionsprototyp) zu AfxLoadLibrary ist mit LoadLibrary identisch.

Wenn die DLL von Windows nicht geladen werden kann, versucht der Prozess, die Verarbeitung fortzusetzen. So könnte der Prozess z. B. dem Benutzer den Fehler melden und ihn veranlassen, einen anderen Pfad für die DLL anzugeben.

SicherheitshinweisSicherheitshinweis

Wenn der Code unter Windows NT 4, Windows 2000 oder Windows XP (vor Installation von SP1) ausgeführt werden soll, vergewissern Sie sich, dass für sämtliche DLLs der vollständige Pfadname angegeben ist. Unter diesen Betriebssystemen wird beim Laden von Dateien zuerst das aktuelle Verzeichnis durchsucht. Wenn Sie den Pfad für die Datei nicht qualifizieren, wird unter Umständen eine falsche Datei geladen.

Was möchten Sie tun?

Worüber möchten Sie mehr erfahren?

Siehe auch

Referenz

LoadLibrary

AfxLoadLibrary

Konzepte

DLLs