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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
Equivale a CTF_COINIT_STA. |
|
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. |
|
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. |
|
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. |
|
0x00000080. Internet Explorer 7 o versione successiva. Non usato. |
|
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. |
|
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. |
|
0x00000400. Windows 7 o versione successiva. Usare le impostazioni locali della tastiera dal thread originale nel nuovo thread generato. |
|
0x00000800. Windows 7 o versione successiva. Inizializzare COM con il modello APARTMENT (STA) a thread singolo per il thread creato. |
|
0x00001000.
Windows 7 e versioni successive. Inizializzare COM con il modello MTA (Multithreaded Apartment) per il thread creato. |
|
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). |
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.
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 |
|