CTF-Flags

Flags, die das Verhalten der aufrufenden Funktion steuern. Wird von SHCreateThread und SHCreateThreadWithHandleverwendet. In diesen Funktionen werden diese Werte als vom Typ SHCT _ FLAGS definiert.

Konstante/Wert Beschreibung
CTF _ 0X00000001
0x00000001. Wenn der Versuch, den Thread mit CreateThread zu erstellen, fehlschlägt, bewirkt das Festlegen dieses Flags, dass die Funktion, auf die pfnThreadProc zeigt, synchron vom aufrufenden Thread aufgerufen wird. Dieses Flag kann nur verwendet werden, wenn pfnCallback NULL ist.
CTF _ THREAD _ REF
0x00000002
0x00000002. Halten Sie einen Verweis auf den erstellenden Thread für die Dauer des Aufrufs der Funktion, auf die von pfnThreadProc gezeigt wird. Dieser Verweis muss mit SHSetThreadReffestgelegt worden sein.
CTF _ PROCESS _ REF
0x00000004
0x00000004. Halten Sie einen Verweis auf den Windows Explorer-Prozess für die Dauer des Aufrufs der Funktion, auf die pfnThreadProc zeigt. Dieses Flag ist für Shell-Erweiterungshandlernützlich, die den Windows Explorer-Prozess möglicherweise nicht vorzeitig schließen müssen. Diese Aktion ist bei Aufgaben wie dem Arbeiten an einem Hintergrundthread oder dem Kopieren von Dateien nützlich. Weitere Informationen finden Sie unter SHGetInstanceExplorer.
CTF _ COINIT _ STA
0x00000008
0x00000008. Initialisieren Sie COM als Singlethread-Apartment (STA) für den erstellten Thread, bevor Sie entweder die optionale Funktion aufrufen, auf die von pfnCallback verwiesen wird, oder die Funktion, auf die von pfnThreadProc gezeigt wird. Dieses Flag ist nützlich, wenn COM für einen Thread initialisiert werden muss. COM wird auch automatisch nicht initialisiert.
CTF _ COINIT
0x00000008
Entspricht CTF _ COINIT _ STA.
CTF _ FREELIBANDEXIT
0x00000010
0x00000010. Internet Explorer 6 oder höher. LoadLibrary wird für die DLL aufgerufen, die die pfnThreadProc-Funktion enthält, um zu verhindern, dass sie entladen wird. Nachdem pfnThreadProc zurückgegeben wurde, wird die DLL mit FreeLibraryfreigegeben, wodurch der DLL-Verweiszähler dekrementiert wird. Übergeben Sie dieses Flag, um zu verhindern, dass die DLL vorzeitig entladen wird. beispielsweise von CoFreeUnusedLibraries. Beachten Sie, dass sich die pfnThreadProc-Funktion in einer DLL befinden muss, wenn dieses Flag übergeben wird. Dieses Flag ist in Windows Vista und höher implizit.
CTF _ REF _ COUNTED
0x00000020
0x00000020. Internet Explorer 6 oder höher. Ein Threadverweis wird automatisch für den erstellten Thread erstellt und mit SHSetThreadReffestgelegt. Nachdem pfnThreadProc zurückgegeben wurde, wird der Threadverweis freigegeben und Nachrichten gesendet, bis der Verweiszähler für den Threadverweis auf 0 (null) fällt, d. h. bis Threads, die vom erstellten Thread abhängig sind, ihre Verweise freigegeben haben.
CTF _ WAIT _ ALLOWCOM
0x00000040
0x00000040. Internet Explorer 6 oder höher. Der aufrufende Thread wartet und fragt COM- und SendMessage-Nachrichten ab. Wenn die synchrone Prozedur versucht, eine Windows Nachricht mit SendMessage an ein Fenster zu senden, das im aufrufenden Thread gehostet wird, wird die Nachricht erfolgreich empfangen. Wenn die synchrone Prozedur versucht, COM für die Kommunikation mit einem STA-Objekt zu verwenden, das im aufrufenden Thread gehostet wird, erreicht der Funktionsaufruf erfolgreich das beabsichtigte Objekt. Der aufrufende Thread ist offen, um die Fragilität erneut zu öffnen. Während der aufrufende Thread die Verwendung von SendMessage und COM durch die synchrone Prozedur verarbeiten kann, kann es sich bei anderen Threads, die SendMessage oder COM verwenden, um mit Objekten zu kommunizieren, die im aufrufenden Thread gehostet werden, um unerwartete Nachrichten oder Funktionsaufrufe handelt, die verarbeitet werden, während die synchrone Prozedur abgeschlossen wird.
CTF _ NICHT VERWENDETER
0x00000080
0x00000080. Internet Explorer 7 oder höher. Wird nicht verwendet.
CTF _ INHERITWOW64-0x00000100
0x00000100. Internet Explorer 7 oder höher. Der neue Thread erbt den Windows-on-Windows 64-Bit-Deaktivierungsstatus (WOW64) für den Dateisystem-Redirector.
CTF _ WAIT _ NO _ REENTRANCY
0x00000200
0x00000200. Windows Vista oder höher. Der aufrufende Thread blockiert alle anderen Prozesse, während darauf gewartet wird, dass die synchrone Prozedur im neuen Thread ausgeführt wird. Wenn die synchrone Prozedur versucht, eine Windows Nachricht mit SendMessage an ein Fenster zu senden, das im aufrufenden Thread gehostet wird, führt dies zu einem Deadlock der synchronen Prozedur. Wenn die synchrone Prozedur versucht, COM zum Kommunizieren mit einem STA-Objekt zu verwenden, das im aufrufenden Thread gehostet wird, führt dies auch zu einem Deadlock der synchronen Prozedur. Der aufrufende Thread wird durch Angabe dieses Flags vor allen erneuten Bedenken geschützt.
CTF _ 0X00000400 DES _ TASTATUR-GEBIETSSCHEMAS
0x00000400. Windows 7 oder höher. Verwenden Sie das Tastaturschema aus dem ursprünglichen Thread im neuen Thread, den es auswählt.
CTF _ OLEINITIALIZE
0x00000800
0x00000800. Windows 7 oder höher. Initialisieren Sie COM mit dem STA-Modell (Singlethread-Apartment) für den erstellten Thread.
CTF _ COINIT _ MTA
0x00001000
0x00001000. Windows 7 und höher. Initialisieren Sie COM mit dem Multithread-Apartmentmodell (MTA) für den erstellten Thread.
CTF _ NOADDREFLIB-0x00002000
0x00002000. Windows 7 oder höher. Dieses Flag ist im Wesentlichen das Gegenteil von CTF _ FREELIBANDEXIT. Dadurch werden LoadLibrary / FreeLibraryAndExitThread-Aufrufe vermieden, die zu Einemkonflikten für die Ladeprogrammsperre führen können. Verwenden Sie CTF _ NOADDREFLIB nur, wenn der neue Thread über Mittel verfügt, um sicherzustellen, dass der Code der ursprünglichen Threadprozedur geladen bleibt. Dieser Wert sollte nicht im Kontext von COM-Objekten verwendet werden, da COM-Objekte sicherstellen müssen, dass die DLL geladen bleibt (normalerweise entlädt COM die DLLs).

Hinweise

Wenn kein CTF _ _ WAIT-Flag angegeben ist, wartet der aufrufende Thread und sendet SendMessage-Nachrichten. Wenn die synchrone Prozedur versucht, eine Windows Nachricht mit SendMessage an ein Fenster zu senden, das im aufrufenden Thread gehostet wird, wird die Nachricht zum vorgesehenen Fenster gesendet. Wenn die synchrone Prozedur versucht, COM zum Kommunizieren mit einem STA-Objekt zu verwenden, das im aufrufenden Thread gehostet wird, führt die synchrone Prozedur zu einem Deadlock. Der aufrufende Thread ist offen, um die Fragilität erneut zu öffnen. Während der aufrufende Thread die Verwendung von SendMessage durch die synchrone Prozedur verarbeiten kann, sind diese Meldungen möglicherweise unerwartet, wenn andere Threads SendMessage für die Kommunikation mit einem Fenster verwenden, das im aufrufenden Thread gehostet wird. Dies kann dazu führen, dass sie verarbeitet werden, während die synchrone Prozedur abgeschlossen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
nur Windows 2000 Professional, Windows XP, Windows 7 [ Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Shlwapi.h