LoadLibrary a AfxLoadLibrary
Procesy volají LoadLibrary (nebo AfxLoadLibrary) k explicitnímu propojení knihovny DLL. Pokud jsou úspěšné, funkce mapují určenou knihovnu DLL do adresového prostoru volajícího procesu a vrátí popisovač ke knihovně DLL, které mohou být použity s jinými funkcemi v explicitním propojení, například GetProcAddressa FreeLibrary.
LoadLibrary se pokouší vyhledat knihovnu DLL pomocí stejné vyhledávací sekvence použité pro implicitní propojení. Pokud systém nemůže najít knihovnu DLL nebo pokud funkce vstupního bodu vrátí hodnotu FALSE, LoadLibrary vrátí hodnotu NULL. Pokud volání LoadLibrary určuje modul knihovny DLL již mapovaný do adresového prostoru volajícího procesu, vrátí funkce popisovač knihovny DLL a zvýší hodnotu referenčního počtu modulu.
Pokud má knihovna DLL funkci vstupního bodu, operační systém zavolá funkci v kontextu vlákna, která se nazývá LoadLibrary. Funkce vstupního bodu není volána pokud je knihovna DLL již připojena k procesu z důvodu předchozího volání LoadLibrary bez odpovídajícího volání funkce FreeLibrary.
Pro aplikace knihovny MFC, které načítají rozšiřující knihovny DLL, doporučujeme použít AfxLoadLibrary místo LoadLibrary. AfxLoadLibrary popisovače synchronizují vlákno před voláním LoadLibrary. Rozhraní (prototyp funkce) AfxLoadLibrary je stejné jako LoadLibrary.
Pokud systém Windows nemůže načíst knihovnu DLL, proces se může pokusit obnovit z chyby. Například, proces by mohl oznámit uživateli chybu a požádat uživatele o určení jiné cesty ke knihovně DLL.
Poznámka k zabezpečení |
---|
Pokud je kód spouštěn pod systémy Windows NT 4, Windows 2000 nebo Windows XP (před aktualizací SP1), nezapomeňte zadat úplný název cesty všech knihoven DLL. V těchto operačních systémech, je aktuální adresář vyhledáván jako první, když jsou soubory načteny. Pokud nemáte kvalifikovanou cestu souboru, soubor může být načten, když není určen. |