Bendera CTF
Bendera yang mengontrol perilaku fungsi panggilan. Digunakan oleh SHCreateThread dan SHCreateThreadWithHandle. Dalam fungsi-fungsi tersebut, nilai-nilai ini didefinisikan sebagai jenis SHCT_FLAGS.
Konstanta/nilai | Deskripsi |
---|---|
|
0x00000001. Jika upaya untuk membuat utas dengan CreateThread gagal, pengaturan bendera ini akan menyebabkan fungsi yang ditunjukkan oleh pfnThreadProc dipanggil secara sinkron dari utas panggilan. Bendera ini hanya dapat digunakan jika pfnCallback adalah NULL. |
|
0x00000002. Tahan referensi ke alur pembuatan selama durasi panggilan ke fungsi yang ditunjukkan oleh pfnThreadProc. Referensi ini harus diatur dengan SHSetThreadRef. |
|
0x00000004. Tahan referensi ke proses Windows Explorer selama durasi panggilan ke fungsi yang ditunjukkan oleh pfnThreadProc. Bendera ini berguna untuk penangan ekstensi Shell, yang mungkin perlu menjaga agar proses Windows Explorer tidak ditutup sebelum waktunya. Tindakan ini berguna selama tugas seperti mengerjakan utas latar belakang atau menyalin file. Untuk informasi selengkapnya, lihat SHGetInstanceExplorer. |
|
0x00000008. Inisialisasi COM sebagai Apartemen Berulir Tunggal (STA) untuk utas yang dibuat sebelum memanggil fungsi opsional yang ditunjukkan oleh pfnCallback atau fungsi yang ditunjukkan oleh pfnThreadProc. Bendera ini berguna ketika COM perlu diinisialisasi untuk utas. COM juga akan secara otomatis tidak diinisialisasi. |
|
Setara dengan CTF_COINIT_STA. |
|
0x00000010.
Internet Explorer 6 atau yang lebih baru.LoadLibrary akan dipanggil pada DLL yang berisi fungsi pfnThreadProc untuk mencegahnya dibongkar. Setelah pfnThreadProc kembali, DLL akan dibebaskan dengan FreeLibrary, sehingga mengurangi jumlah referensi DLL. Teruskan bendera ini untuk mencegah DLL dibongkar sebelum waktunya; misalnya, oleh CoFreeUnusedLibraries. Perhatikan bahwa jika bendera ini diteruskan, fungsi pfnThreadProc harus berada di DLL. Bendera ini implisit di Windows Vista dan yang lebih baru. |
|
0x00000020. Internet Explorer 6 atau yang lebih baru. Referensi utas akan secara otomatis dibuat untuk utas yang dibuat dan diatur dengan SHSetThreadRef. Setelah pfnThreadProc kembali, referensi utas dirilis dan pesan dikirim hingga jumlah referensi pada referensi utas turun ke nol, yaitu, sampai utas yang bergantung pada utas yang dibuat telah merilis referensinya. |
|
0x00000040. Internet Explorer 6 atau yang lebih baru. Utas panggilan menunggu dan memompa pesan COM dan SendMessage . Jika prosedur sinkron mencoba mengirim pesan Windows dengan SendMessage ke jendela yang dihosting di utas panggilan, pesan akan berhasil tiba. Jika prosedur sinkron mencoba menggunakan COM untuk berkomunikasi dengan objek STA yang dihosting di utas panggilan, panggilan fungsi akan berhasil mencapai objek yang dimaksudkan. Alur panggilan terbuka untuk masuk kembali kerapuhan. Meskipun utas panggilan dapat menangani penggunaan SendMessage dan COM prosedur sinkron, jika utas lain menggunakan SendMessage atau COM untuk berkomunikasi ke objek yang dihosting di utas panggilan, maka ini mungkin pesan atau panggilan fungsi yang tidak terduga yang diproses saat prosedur sinkron selesai. |
|
0x00000080. Internet Explorer 7 atau yang lebih baru. Tidak digunakan. |
|
0x00000100. Internet Explorer 7 atau yang lebih baru. Utas baru mewarisi status nonaktifkan Windows-on-Windows 64-bit (WOW64) untuk pengalih sistem file. |
|
0x00000200. Windows Vista atau yang lebih baru. Utas panggilan memblokir semua proses lain sambil menunggu prosedur sinkron berjalan pada utas baru. Jika prosedur sinkron mencoba mengirim pesan Windows dengan SendMessage ke jendela yang dihosting di utas panggilan, ini menyebabkan prosedur sinkron mengalami kebuntuan. Jika prosedur sinkron mencoba menggunakan COM untuk berbicara dengan objek STA yang dihosting di utas panggilan, ini juga menyebabkan prosedur sinkron mengalami kebuntuan. Utas panggilan dilindungi dari semua masalah masuk kembali dengan menentukan bendera ini. |
|
0x00000400. Windows 7 atau versi lebih baru. Gunakan lokal keyboard dari utas asli di utas baru yang ditelurkannya. |
|
0x00000800. Windows 7 atau versi lebih baru. Inisialisasi COM dengan model apartemen berulir tunggal (STA) untuk utas yang dibuat. |
|
0x00001000.
Windows 7 dan yang lebih baru. Inisialisasi COM dengan model apartemen multithreaded (MTA) untuk utas yang dibuat. |
|
0x00002000. Windows 7 atau versi lebih baru. Bendera ini pada dasarnya berlawanan dengan CTF_FREELIBANDEXIT. Ini menghindari panggilan LoadLibrary/FreeLibraryAndExitThread yang dapat mengakibatkan ketidakcocokan untuk kunci pemuat. Gunakan CTF_NOADDREFLIB hanya ketika utas baru memiliki sarana untuk memastikan bahwa kode prosedur utas asli akan tetap dimuat. Nilai ini tidak boleh digunakan dalam konteks objek COM, karena objek COM harus memastikan bahwa DLL tetap dimuat (biasanya, COM membongkar DLL). |
Jika tidak ada bendera CTF_WAIT_ yang ditentukan, utas panggilan akan menunggu dan mengirim pesan SendMessage . Jika prosedur sinkron mencoba mengirim pesan Windows dengan SendMessage ke jendela yang dihosting di utas panggilan, pesan akan sampai ke jendela yang dimaksudkan. Jika prosedur sinkron mencoba menggunakan COM untuk berbicara dengan objek STA yang dihosting di utas panggilan, prosedur sinkron akan mengalami kebuntuan. Alur panggilan terbuka untuk masuk kembali kerapuhan. Meskipun utas panggilan dapat menangani penggunaan SendMessage prosedur sinkron, jika utas lain menggunakan SendMessage untuk berkomunikasi ke jendela yang dihosting di utas panggilan, maka pesan ini mungkin tidak terduga. Ini dapat menyebabkan mereka diproses saat prosedur sinkron selesai.
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows 2000 Professional, Windows XP, Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung |
Windows 2000 Server [hanya aplikasi desktop] |
Header |
|