Namespace objek kernel

Windows memiliki beberapa namespace untuk objek kernel bernama berikut: peristiwa, semaphores, mutex, timer yang dapat ditunggu, objek pemetaan file, objek pekerjaan, dan objek tautan simbolis. Ada namespace global yang digunakan terutama oleh layanan di aplikasi klien/server. Selain itu, setiap sesi memiliki namespace terpisah untuk objek ini.

Namespace sesi terpisah memungkinkan beberapa klien untuk menjalankan aplikasi yang sama tanpa mengganggu satu sama lain. Untuk proses yang dimulai di bawah sesi klien, sistem menggunakan namespace sesi klien secara default. Namun, proses ini dapat menggunakan namespace global dengan menambahkan awalan "Global\" ke nama objek. Misalnya, kode berikut memanggil CreateEvent dan membuat objek peristiwa bernama CSAPP di namespace global:

CreateEventW( NULL, FALSE, FALSE, L"Global\\CSAPP" );

Aplikasi layanan menggunakan namespace global secara default.

Catatan

Namespace layanan global tidak tersedia untuk aplikasi Windows Store.

Sesi nol hanya digunakan untuk layanan hosting, dan tidak ada sesi konsol, tidak seperti versi Windows sebelum Windows Vista.

Namespace layanan global memungkinkan proses pada beberapa sesi klien untuk berkomunikasi dengan aplikasi layanan. Misalnya, aplikasi klien/server mungkin menggunakan objek mutex untuk sinkronisasi. Modul server dapat membuat objek mutex di namespace layanan global. Kemudian sesi klien dapat menggunakan awalan "Global\" untuk membuka objek mutex.

Penggunaan lain dari namespace layanan global adalah untuk aplikasi yang menggunakan objek bernama untuk mendeteksi bahwa sudah ada instans aplikasi yang berjalan dalam sistem di semua sesi. Objek bernama ini harus dibuat atau dibuka di namespace global alih-alih namespace layanan per sesi. Kasus yang lebih umum menjalankan aplikasi sekali per sesi didukung secara default karena objek bernama dibuat di namespace per sesi.

Selain awalan "Global\", proses klien dapat menggunakan awalan "Local\" untuk membuat objek secara eksplisit di namespace sesi mereka. Kata kunci ini peka huruf besar/kecil.

Awalan "Sesi\" dicadangkan untuk penggunaan sistem dan Anda tidak boleh menggunakannya dalam nama objek kernel.

Peralihan pengguna cepat diimplementasikan dengan menggunakan sesi. Pengguna pertama yang masuk menggunakan sesi satu, pengguna berikutnya untuk masuk menggunakan sesi dua, dan sebagainya. Nama objek kernel harus mengikuti panduan yang diuraikan untuk Layanan Desktop Jauh sehingga aplikasi dapat mendukung beberapa pengguna.

Pembuatan objek pemetaan file atau objek tautan simbolis di namespace layanan global, seperti dengan menggunakan CreateFileMapping, dari sesi selain sesi nol adalah operasi istimewa. Karena itu, aplikasi harus mengaktifkan SeCreateGlobalPrivilege untuk membuat objek pemetaan file atau objek tautan simbolis di namespace global. Pemeriksaan hak istimewa terbatas pada pembuatan objek ini, dan tidak berlaku untuk membuka objek yang ada. Misalnya, jika layanan atau sistem membuat objek pemetaan file di namespace layanan global, proses apa pun yang berjalan dalam sesi apa pun dapat mengakses objek pemetaan file asalkan proses memiliki akses yang diperlukan.