Udostępnij za pośrednictwem


LoadLibrary i AfxLoadLibrary

Przetwarza wywołanie LoadLibrary (lub AfxLoadLibrary), aby jawnie utworzyć łącze do biblioteki DLL.Jeśli funkcja się powiedzie, mapuje daną bibliotekę DLL do przestrzeni adresowej procesu wywołującego i zwraca uchwyt do biblioteki DLL, która może być używana z innymi funkcjami jawnego łączenia — na przykład GetProcAddress i FreeLibrary.

LoadLibrary próbuje zlokalizować bibliotekę DLL przy użyciu tej samej kolejności wyszukiwania, która jest używana w przypadku łączenia niejawnego.Jeśli system nie może odnaleźć biblioteki DLL lub jeśli funkcja punktu wejścia zwraca wartość FALSE, LoadLibrary zwraca wartość NULL.Jeśli wywołanie LoadLibrary określa moduł DLL, który jest już zmapowany do przestrzeni adresowej procesu wywołującego, funkcja zwraca uchwyt DLL i zwiększa odczyt 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 punktu wejścia nie jest wywoływana, jeśli biblioteka DLL jest już dołączona do procesu ze względu na poprzednie wywołanie LoadLibrary , które nie ma odpowiedniego wywołania funkcji FreeLibrary.

W przypadku aplikacji MFC, które ładują rozszerzenia bibliotek DLL, zalecamy użycie AfxLoadLibrary zamiast LoadLibrary.AfxLoadLibrary obsługuje synchronizację wątków, zanim wywołasz LoadLibrary.Interfejs (prototyp funkcji) do AfxLoadLibrary jest taki sam jak LoadLibrary.

Jeśli system Windows nie może załadować biblioteki DLL, proces może próbować na nowo uruchomić się po wystąpieniu błędu.Na przykład proces może powiadomić użytkownika o błędzie i poprosić użytkownika, aby określił inną ścieżkę do biblioteki DLL.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Jeśli kod ma być uruchamiany w systemie Windows NT 4, Windows 2000 lub Windows XP (przed SP1), pamiętaj o określeniu pełnej ścieżki do każdej biblioteki DLL.W tych systemach operacyjnych bieżący katalog jest przeszukiwany w pierwszej kolejności, gdy pliki są ładowane.Jeśli nie zakwalifikowano ścieżki pliku, istnieje możliwość wczytania pliku niezamierzonego.

Co chcesz zrobić?

O czym chcesz się dowiedzieć więcej?

Zobacz też

Informacje

AfxLoadLibrary

Koncepcje

Biblioteki DLL w programie Visual C++

Inne zasoby

Funkcja LoadLibrary