SetThreadpoolCallbackLibrary-Funktion (winbase.h)
Stellt sicher, dass die angegebene DLL geladen bleibt, solange ausstehende Rückrufe vorhanden sind.
Syntax
void SetThreadpoolCallbackLibrary(
[in, out] PTP_CALLBACK_ENVIRON pcbe,
[in] PVOID mod
);
Parameter
[in, out] pcbe
Eine TP_CALLBACK_ENVIRON-Struktur , die die Rückrufumgebung definiert. Die InitializeThreadpoolEnvironment-Funktion gibt diese Struktur zurück.
[in] mod
Ein Handle für die DLL.
Rückgabewert
Keine
Bemerkungen
Sie sollten diese Funktion aufrufen, wenn ein Rückruf möglicherweise die Ladeprogrammsperre erhält. Dadurch wird verhindert, dass ein Deadlock auftritt, wenn ein Thread in DllMain auf das Ende des Rückrufs wartet und ein anderer Thread, der den Rückruf ausführt, versucht, die Ladeprogrammsperre abzurufen.
Wenn die DLL, die den Rückruf enthält, möglicherweise entladen wird, muss der Bereinigungscode in DllMain ausstehende Rückrufe abbrechen, bevor das Objekt freigegeben wird.
Die Verwaltung von Rückrufen, die mit einer TP_CALLBACK_ENVIRON erstellt wurden, die eine Rückrufbibliothek angibt, ist etwas verarbeitungsintensiv. Sie sollten andere Optionen in Betracht ziehen, um sicherzustellen, dass die Bibliothek nicht entladen wird, während Rückrufe ausgeführt werden, oder um sicherzustellen, dass Rückrufe, die möglicherweise ausgeführt werden, nicht die Ladeprogrammsperre erhalten.
Der Threadpool übernimmt den Besitz des Bibliotheksverweis, der für diese Funktion bereitgestellt wird. Der Aufrufer sollte FreeLibrary nicht für ein Modulhandle aufrufen, nachdem er es an diese Funktion übergeben hat.
Diese Funktion wird als Inlinefunktion implementiert.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0600 oder höher.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (Windows.h einschließen) |
Weitere Informationen
FreeLibraryWhenCallbackReturns
InitializeThreadpoolEnvironment