Bagikan melalui


Objek Kernel

Handel objek kernel bersifat spesifik proses. Artinya, proses harus membuat objek atau membuka objek yang ada untuk mendapatkan handel objek kernel. Batas per proses pada handel kernel adalah 2^24. Namun, handel disimpan di kumpulan halaman, sehingga jumlah handel aktual yang dapat Anda buat didasarkan pada memori yang tersedia. Jumlah handel yang dapat Anda buat pada Windows 32-bit secara signifikan lebih rendah dari 2^24.

Proses apa pun dapat membuat handel baru ke objek kernel yang ada (bahkan yang dibuat oleh proses lain), asalkan proses mengetahui nama objek dan memiliki akses keamanan ke objek. Handel objek kernel mencakup hak akses yang menunjukkan tindakan yang dapat diberikan atau ditolak untuk proses. Aplikasi menentukan hak akses saat membuat objek atau mendapatkan handel objek yang ada. Setiap jenis objek kernel mendukung serangkaian hak aksesnya sendiri. Misalnya, penanganan aktivitas dapat mengatur atau menunggu akses (atau keduanya), handel file dapat memiliki akses baca atau tulis (atau keduanya), dan sebagainya. Untuk informasi selengkapnya, lihat Objek Yang Dapat Diamankan.

Dalam ilustrasi berikut, aplikasi membuat objek peristiwa. Fungsi CreateEvent membuat objek peristiwa dan mengembalikan handel objek.

aplikasi yang membuat objek peristiwa

Setelah objek peristiwa dibuat, aplikasi dapat menggunakan penanganan aktivitas untuk mengatur atau menunggu peristiwa. Handel tetap valid sampai aplikasi menutup handel atau dihentikan.

Sebagian besar objek kernel mendukung beberapa handel ke satu objek. Misalnya, aplikasi dalam ilustrasi sebelumnya dapat memperoleh handel objek peristiwa tambahan dengan menggunakan fungsi OpenEvent , seperti yang ditunjukkan dalam ilustrasi berikut.

aplikasi yang membuat objek peristiwa dengan beberapa handel

Metode ini memungkinkan aplikasi untuk memiliki handel dengan hak akses yang berbeda. Misalnya, Handel 1 mungkin telah mengatur dan menunggu akses ke peristiwa, dan Menangani 2 mungkin hanya memiliki akses tunggu.

Jika proses lain mengetahui nama peristiwa dan memiliki akses keamanan ke objek, proses tersebut dapat membuat handel objek peristiwanya sendiri dengan menggunakan OpenEvent. Aplikasi pembuatan juga dapat menduplikasi salah satu handelnya ke dalam proses yang sama atau ke proses lain dengan menggunakan fungsi DuplicateHandle .

Objek tetap dalam memori selama setidaknya ada satu handel objek. Dalam ilustrasi berikut, aplikasi menggunakan fungsi CloseHandle untuk menutup handel objek peristiwa mereka. Ketika tidak ada handel peristiwa, sistem menghapus objek dari memori, seperti yang ditunjukkan dalam ilustrasi berikut.

aplikasi menutup penanganan objek peristiwa untuk menghapus objek dari memori

Sistem mengelola objek file agak berbeda dari objek kernel lainnya. Objek file berisi penunjuk file — penunjuk ke byte berikutnya untuk dibaca atau ditulis dalam file. Setiap kali aplikasi membuat handel file baru, sistem membuat objek file baru. Oleh karena itu, lebih dari satu objek file dapat merujuk ke satu file pada disk, seperti yang ditunjukkan dalam ilustrasi berikutnya.

beberapa objek file yang mengacu pada file pada disk

Hanya melalui duplikasi atau pewarisan dapat lebih dari satu handel file merujuk ke objek file yang sama, seperti yang ditunjukkan dalam ilustrasi berikut.

dua handel file merujuk ke objek file yang sama

Tabel berikut mencantumkan masing-masing objek kernel, bersama dengan fungsi pembuat dan perusak setiap objek. Fungsi pembuat membuat objek dan handel objek atau membuat handel objek baru yang sudah ada. Fungsi perusak menutup handel objek. Ketika aplikasi menutup handel terakhir ke objek kernel, sistem akan menghapus objek dari memori.

Objek kernel Fungsi pembuat Fungsi perusak
Token akses CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken, OpenThreadToken CloseHandle
Mengubah pemberitahuan FindFirstChangeNotification FindCloseChangeNotification
Perangkat komunikasi CreateFile CloseHandle
Input konsol CreateFile, dengan CONIN$ CloseHandle
Buffer layar konsol CreateFile, dengan CONOUT$ CloseHandle
Desktop GetThreadDesktop Aplikasi tidak dapat menghapus objek ini.
Kejadian CreateEvent, CreateEventEx, OpenEvent CloseHandle
Log peristiwa OpenEventLog, RegisterEventSource, OpenBackupEventLog CloseEventLog
File CreateFile CloseHandle, DeleteFile
Pemetaan file CreateFileMapping, OpenFileMapping CloseHandle
Temukan file FindFirstFile FindClose
Tumpukan HeapCreate HeapDestroy
Port penyelesaian I/O CreateIoCompletionPort CloseHandle
Tugas CreateJobObject CloseHandle
Mailslot CreateMailslot CloseHandle
Pemberitahuan sumber daya memori CreateMemoryResourceNotification CloseHandle
Modul LoadLibrary, GetModuleHandle FreeLibrary
Mutex CreateMutex, CreateMutexEx, OpenMutex CloseHandle
Pipa CreateNamedPipe, CreatePipe CloseHandle, DisconnectNamedPipe
Proses CreateProcess, OpenProcess, GetCurrentProcess CloseHandle, TerminateProcess
Semaphore CreateSemaphore, CreateSemaphoreEx, OpenSemaphore CloseHandle
Soket soket, terima closesocket
Rangkaian CreateThread, CreateRemoteThread, GetCurrentThread CloseHandle, TerminateThread
Pengatur Waktu CreateWaitableTimer, CreateWaitableTimerEx, OpenWaitableTimer CloseHandle
Memperbarui sumber daya BeginUpdateResource EndUpdateResource
Stasiun jendela GetProcessWindowStation Aplikasi tidak dapat menghapus objek ini.

 

Namespace Objek Kernel