Funkcja LoadLibrary i AfxLoadLibrary
Przetwarza wywołanie LoadLibrary (lub AfxLoadLibrary) aby jawnie połączyć bibliotekę DLL.Jeśli funkcja się powiedzie, mapuje określonej biblioteki DLL do przestrzeni adresowej procesu wywołującego i zwraca uchwyt do biblioteki DLL, która może być używany z innych funkcji w jawnego łączenia — na przykład, GetProcAddress i FreeLibrary.
LoadLibrarypróbuje zlokalizować biblioteki DLL przy użyciu tej samej kolejności wyszukiwania, który jest używany dla niejawnym dołączaniu.Jeśli nie można odnaleźć biblioteki DLL, lub jeśli funkcja wejściowa zwraca wartość FALSE, LoadLibrary zwraca wartość NULL.Jeśli wywołanie LoadLibrary Określa moduł DLL, który już jest mapowany do przestrzeni adresowej procesu wywołującego, funkcja zwraca uchwyt DLL i zwiększenie licznika odwołań modułu.
Jeśli biblioteka DLL pełni funkcję punktu wejścia, system operacyjny wywołuje funkcję w kontekście wątku, który wywołał LoadLibrary.Funkcja wejściowa nie jest wywoływana, jeśli biblioteka DLL jest już dołączony do procesu z powodu poprzednie wywołanie LoadLibrary nie odpowiedniego wywołania, który ma FreeLibrary funkcji.
Dla aplikacji MFC ładowanych bibliotek DLL rozszerzeń, zaleca się używanie AfxLoadLibrary zamiast LoadLibrary.AfxLoadLibraryuchwyty wątków synchronizacji, zanim zadzwonisz do LoadLibrary.Interfejs (prototyp funkcji) do AfxLoadLibrary jest taka sama jak LoadLibrary.
System Windows nie może załadować biblioteki DLL, można spróbować odzyskać błędu procesu.Na przykład proces może powiadomić użytkownika o błąd i go poprosić, aby określić inną ścieżkę do biblioteki DLL.
Uwaga dotycząca zabezpieczeń |
---|
W przypadku kodu na uruchamianie w systemie Windows NT 4, Windows 2000 lub Windows XP (przed SP1), upewnij się określić pełną ścieżkę do biblioteki DLL.W tych systemach operacyjnych bieżący katalog jest przeszukiwany w pierwszej kolejności po załadowaniu plików.Jeśli nie kwalifikujesz ścieżkę pliku, plik, który nie jest tym zamierzone może być załadowany. |
Co chcesz zrobić?
Co chcesz dowiedzieć się więcej?
Zobacz też
Informacje
Koncepcje
Biblioteki DLL w programie Visual C++