Share via


Flag CTF

Flag che controllano il comportamento della funzione chiamante. Usato da SHCreateThread e SHCreateThreadWithHandle. In queste funzioni questi valori vengono definiti come di tipo SHCT_FLAGS.

Costante/valore Descrizione
CTF_INSIST
0x00000001
0x00000001. Se il tentativo di creare il thread con CreateThread ha esito negativo, l'impostazione di questo flag causerà la chiamata sincrona della funzione a cui punta pfnThreadProc dal thread chiamante. Questo flag può essere usato solo se pfnCallback è NULL.
CTF_THREAD_REF
0x00000002
0x00000002. Mantenere un riferimento al thread di creazione per la durata della chiamata alla funzione a cui punta pfnThreadProc. Questo riferimento deve essere stato impostato con SHSetThreadRef.
CTF_PROCESS_REF
0x00000004
0x00000004. Mantenere un riferimento al processo di Esplora risorse di Windows per la durata della chiamata alla funzione a cui punta pfnThreadProc. Questo flag è utile per i gestori di estensioni della shell, che potrebbero dover impedire la chiusura prematura del processo di Esplora risorse di Windows. Questa azione è utile durante le attività, ad esempio l'utilizzo di un thread in background o la copia di file. Per altre informazioni, vedere SHGetInstanceExplorer.
CTF_COINIT_STA
0x00000008
0x00000008. Inizializzare COM come apartment a thread singolo (STA) per il thread creato prima di chiamare la funzione facoltativa a cui punta pfnCallback o la funzione a cui punta pfnThreadProc. Questo flag è utile quando è necessario inizializzare COM per un thread. COM verrà automaticamente non inizializzato.
CTF_COINIT
0x00000008
Equivale a CTF_COINIT_STA.
CTF_FREELIBANDEXIT
0x00000010
0x00000010. Internet Explorer 6 o versione successiva.LoadLibrary verrà chiamato nella DLL che contiene la funzione pfnThreadProc per impedire che venga scaricata. Dopo la restituzione di pfnThreadProc , la DLL verrà liberata con FreeLibrary, riducendo così il conteggio dei riferimenti dll. Passare questo flag per impedire che la DLL venga scaricata prematuramente; ad esempio da CoFreeUnusedLibraries. Si noti che se questo flag viene passato, la funzione pfnThreadProc deve risiedere in una DLL. Questo flag è implicito in Windows Vista e versioni successive.
CTF_REF_COUNTED
0x00000020
0x00000020. Internet Explorer 6 o versione successiva. Verrà creato automaticamente un riferimento al thread per il thread creato e impostato con SHSetThreadRef. Dopo la restituzione di pfnThreadProc , il riferimento al thread viene rilasciato e i messaggi vengono inviati fino a quando il conteggio dei riferimenti al riferimento al thread non scende a zero, ovvero fino a quando i thread dipendenti dal thread creato non hanno rilasciato i relativi riferimenti.
CTF_WAIT_ALLOWCOM
0x00000040
0x00000040. Internet Explorer 6 o versione successiva. Il thread chiamante attende e pompa i messaggi COM e SendMessage . Se la procedura sincrona tenta di inviare un messaggio di Windows con SendMessage a una finestra ospitata nel thread chiamante, il messaggio verrà visualizzato correttamente. Se la routine sincrona tenta di utilizzare COM per comunicare con un oggetto STA ospitato nel thread chiamante, la chiamata di funzione raggiungerà correttamente l'oggetto previsto. Il filo chiamante è aperto per riemettere la fragilità. Anche se il thread chiamante può gestire l'utilizzo della routine sincrona di SendMessage e COM, se altri thread usano SendMessage o COM per comunicare agli oggetti ospitati nel thread chiamante, questi potrebbero essere messaggi imprevisti o chiamate di funzione che vengono elaborate durante il completamento della procedura sincrona.
CTF_UNUSED
0x00000080
0x00000080. Internet Explorer 7 o versione successiva. Non usato.
CTF_INHERITWOW64
0x00000100
0x00000100. Internet Explorer 7 o versione successiva. Il nuovo thread eredita lo stato di disabilitazione di Windows in Windows a 64 bit (WOW64) per il redirector del file system.
CTF_WAIT_NO_REENTRANCY
0x00000200
0x00000200. Windows Vista o versione successiva. Il thread chiamante blocca tutti gli altri processi in attesa dell'esecuzione della routine sincrona nel nuovo thread. Se la procedura sincrona tenta di inviare un messaggio di Windows con SendMessage a una finestra ospitata nel thread chiamante, la routine sincrona causa il deadlock della routine sincrona. Se la routine sincrona tenta di usare COM per comunicare con un oggetto STA ospitato nel thread chiamante, la routine sincrona causa il deadlock della routine sincrona. Il thread chiamante è protetto da tutti i problemi di riesezione specificando questo flag.
CTF_KEYBOARD_LOCALE
0x00000400
0x00000400. Windows 7 o versione successiva. Usare le impostazioni locali della tastiera dal thread originale nel nuovo thread generato.
CTF_OLEINITIALIZE
0x00000800
0x00000800. Windows 7 o versione successiva. Inizializzare COM con il modello APARTMENT (STA) a thread singolo per il thread creato.
CTF_COINIT_MTA
0x00001000
0x00001000. Windows 7 e versioni successive. Inizializzare COM con il modello MTA (Multithreaded Apartment) per il thread creato.
CTF_NOADDREFLIB
0x00002000
0x00002000. Windows 7 o versione successiva. Questo flag è essenzialmente l'opposto di CTF_FREELIBANDEXIT. In questo modo si evitano le chiamateLoadLibrary FreeLibraryAndExitThread che possono causare conflitti per il blocco del caricatore./ Usare CTF_NOADDREFLIB solo quando il nuovo thread ha mezzi per garantire che il codice della routine del thread originale rimanga caricato. Questo valore non deve essere usato nel contesto degli oggetti COM, perché gli oggetti COM devono garantire che la DLL rimanga caricata (in genere, COM scarica le DLL).

Commenti

Se non viene specificato alcun flag di CTF_WAIT_, il thread chiamante attenderà e invierà messaggi SendMessage . Se la procedura sincrona tenta di inviare un messaggio di Windows con SendMessage a una finestra ospitata nel thread chiamante, il messaggio verrà visualizzato nella finestra desiderata. Se la procedura sincrona tenta di usare COM per comunicare con un oggetto STA ospitato nel thread chiamante, la routine sincrona si blocca. Il filo chiamante è aperto per riemettere la fragilità. Anche se il thread chiamante può gestire l'uso della routine sincrona di SendMessage, se altri thread usano SendMessage per comunicare con una finestra ospitata nel thread chiamante, questi messaggi potrebbero essere imprevisti. Ciò può causare l'elaborazione durante il completamento della procedura sincrona.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional, Windows XP, Windows 7 [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Shlwapi.h