Bagikan melalui


Handel dan Pengidentifikasi Utas

Saat utas baru dibuat oleh fungsi CreateThread atau CreateRemoteThread , handel ke utas dikembalikan. Secara default, handel ini memiliki hak akses penuh, dan—tunduk pada pemeriksaan akses keamanan—dapat digunakan dalam salah satu fungsi yang menerima handel utas. Handel ini dapat diwariskan oleh proses anak, tergantung pada bendera pewarisan yang ditentukan saat dibuat. Handel dapat diduplikasi oleh DuplicateHandle, yang memungkinkan Anda membuat handel utas dengan subset hak akses. Handel berlaku hingga ditutup, bahkan setelah utas yang diwakilinya telah dihentikan.

Fungsi CreateThread dan CreateRemoteThread juga mengembalikan pengidentifikasi yang secara unik mengidentifikasi utas di seluruh sistem. Utas dapat menggunakan fungsi GetCurrentThreadId untuk mendapatkan pengidentifikasi utasnya sendiri. Pengidentifikasi berlaku sejak utas dibuat hingga utas dihentikan. Perhatikan bahwa tidak ada pengidentifikasi utas yang akan menjadi 0.

Jika Anda memiliki pengidentifikasi utas, Anda bisa mendapatkan handel utas dengan memanggil fungsi OpenThread . OpenThread memungkinkan Anda menentukan hak akses handel dan apakah dapat diwariskan.

Utas dapat menggunakan fungsi GetCurrentThread untuk mengambil handel pseudo ke objek utasnya sendiri. Handel semu ini hanya berlaku untuk proses panggilan; tidak dapat diwariskan atau diduplikasi untuk digunakan oleh proses lain. Untuk mendapatkan handel nyata ke utas, diberikan handel pseudo, gunakan fungsi DuplicateHandle .

Untuk menghitung utas proses, gunakan fungsi Thread32First dan Thread32Next .