Udostępnij za pośrednictwem


Zwalnianie bibliotek DLL załadowanych z opóźnieniem

Pomocnik obciążenia opóźnienie domyślny podany sprawdza, czy deskryptory opóźnienie obciążenia mają wskaźnik i kopię pierwotnej tabeli Adres importu (IAT) w polu pUnloadIAT.Jeśli tak, zapisze wskaźnik na liście do deskryptora opóźnienie importu.Umożliwia to funkcja pomocnika, aby znaleźć biblioteki DLL nazwy, aby obsługiwać jawnie rozładunku tej biblioteki DLL.

Oto towarzyszących budowli i funkcje jawnie wyładowania DLL załadowane opóźnienia:

//
// Unload support from delayimp.h
//

// routine definition; takes a pointer to a name to unload

ExternC
BOOL WINAPI
__FUnloadDelayLoadedDLL2(LPCSTR szDll);

// structure definitions for the list of unload records
typedef struct UnloadInfo * PUnloadInfo;
typedef struct UnloadInfo {
    PUnloadInfo     puiNext;
    PCImgDelayDescr pidd;
    } UnloadInfo;

// from delayhlp.cpp
// the default delay load helper places the unloadinfo records in the 
// list headed by the following pointer.
ExternC
PUnloadInfo __puiHead;

Struktura UnloadInfo jest implementowane za pomocą klasy języka C++, która używa Funkcja LocalAlloc i funkcji LocalFree implementacje jako jego operatora Nowy i operator usunąć odpowiednio.Opcje te są przechowywane w standardowych połączonej listy przy użyciu __puiHead jako czele listy.

__FUnloadDelayLoadedDLL telefonicznej będzie próbował znaleźć nazwę świadczenia na liście ładowanych bibliotek DLL (wymagana jest dokładny odpowiednik).Jeżeli znalezione, kopię IAT w pUnloadIAT jest kopiowany na wierzchu IAT uruchomione do przywrócenia wskaźniki thunk biblioteki zostanie zwolniona z FreeLibrary, dopasowanie UnloadInfo rekord jest niepołączone z listy i usunąć i zwracana jest wartość PRAWDA.

Argument do funkcji __FUnloadDelayLoadedDLL2 jest uwzględniana wielkość liter.Na przykład możesz określić:

__FUnloadDelayLoadedDLL2("user32.DLL");

a nie:

__FUnloadDelayLoadedDLL2("User32.DLL");.

Zobacz też

Informacje

Ogólne informacje funkcji Pomocnik