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

DestroyThreadpoolEnvironment

FreeLibraryWhenCallbackReturns

InitializeThreadpoolEnvironment

SetThreadpoolCallbackCleanupGroup

SetThreadpoolCallbackPool

SetThreadpoolCallbackPriority

SetThreadpoolCallbackRunsLong

Threadpools