Freigeben über


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

TpDestroyCallbackEnviron

TpInitializeCallbackEnviron

TpSetCallbackActivationContext

TpSetCallbackCleanupGroup

TpSetCallbackFinalizationCallback

TpSetCallbackLongFunction

TpSetCallbackNoActivationContext

TpSetCallbackPersistent

TpSetCallbackPriority

TpSetCallbackThreadpool