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 |
|---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
Entspricht CTF _ COINIT _ STA. |
|
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. |
|
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. |
|
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. |
|
0x00000080. Internet Explorer 7 oder höher. Wird nicht verwendet. |
|
0x00000100. Internet Explorer 7 oder höher. Der neue Thread erbt den Windows-on-Windows 64-Bit-Deaktivierungsstatus (WOW64) für den Dateisystem-Redirector. |
|
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. |
|
0x00000400. Windows 7 oder höher. Verwenden Sie das Tastaturschema aus dem ursprünglichen Thread im neuen Thread, den es auswählt. |
|
0x00000800. Windows 7 oder höher. Initialisieren Sie COM mit dem STA-Modell (Singlethread-Apartment) für den erstellten Thread. |
|
0x00001000. Windows 7 und höher. Initialisieren Sie COM mit dem Multithread-Apartmentmodell (MTA) für den erstellten Thread. |
|
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 |
|