TpSetCallbackRaceWithDll-Funktion (winnt.h)
Stellt sicher, dass die angegebene DLL geladen bleibt, solange ausstehende Rückrufe vorhanden sind.
Syntax
void TpSetCallbackRaceWithDll(
[in, out] PTP_CALLBACK_ENVIRON CallbackEnviron,
[in] PVOID DllHandle
);
Parameter
[in, out] CallbackEnviron
Eine TP_CALLBACK_ENVIRON-Struktur , die die Rückrufumgebung definiert. Die InitializeThreadpoolEnvironment-Funktion gibt diese Struktur zurück.
[in] DllHandle
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.
Diese Funktion wird als Inlinefunktion implementiert.
Anforderungen
Zielplattform | Windows |
Kopfzeile | winnt.h |
Weitere Informationen
TpSetCallbackActivationContext
TpSetCallbackFinalizationCallback