ntladen der DLL aus allen Prozessen nach dem Aufheben des globalen CBT-Hoo

<, p> Wie kann eine DLL ordnungsgemäß aus allen Prozessen entladen werden, wenn der systemweite Hook, der sie geladen hat, entladen wird?

Von MSDN:

Sie können eine globale Hook-Prozedur mit UnhookWindowsHookEx, @ auslöse aber diese Funktion gibt die DLL, die die Hook-Prozedur enthält, nicht frei. Dies liegt daran, dass globale Hook-Prozeduren im Prozesskontext jeder Anwendung auf dem Desktop aufgerufen werden und für alle diese Prozesse einen impliziten Aufruf der LoadLibrary-Funktion verursachen. Da ein Aufruf der FreeLibrary-Funktion für einen anderen Prozess nicht möglich ist, kann die DLL nicht freigegeben werden. Das System gibt die DLL schließlich frei, nachdem alle explizit mit der DLL verknüpften Prozesse entweder beendet wurden oder FreeLibrary aufgerufen haben und alle Prozesse, die die Hook-Prozedur aufgerufen haben, die Verarbeitung außerhalb der DLL wieder aufgenommen haben.

Also, was ich suche, ist eine Methode, um zu erkennen, wenn der Haken gelöst ist, und rufen Sie dannFreeLibrary von allen Prozessen, die eingehakt wurden. Gibt es andere Möglichkeiten, das sofortige Entladen einer DLL zu bewirken, wenn der Hook entladen wird?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage