Bagikan melalui


Nama Objek

Objek bernama menyediakan cara mudah bagi proses untuk berbagi handel objek. Setelah proses membuat peristiwa bernama, mutex, semaphore, atau objek timer, proses lain dapat menggunakan nama untuk memanggil fungsi yang sesuai ( OpenEvent, OpenMutex, OpenSemaphore, atau OpenWaitableTimer) untuk membuka handel ke objek. Perbandingan nama peka huruf besar/kecil.

Nama peristiwa, semaphore, mutex, timer yang dapat di tunggu, pemetaan file, dan objek pekerjaan memiliki namespace yang sama. Jika Anda mencoba membuat objek menggunakan nama yang digunakan oleh objek jenis lain, fungsi gagal dan GetLastError mengembalikan ERROR_INVALID_HANDLE. Oleh karena itu, saat membuat objek bernama, gunakan nama unik dan pastikan untuk memeriksa nilai pengembalian fungsi untuk kesalahan nama duplikat.

Jika Anda mencoba membuat objek menggunakan nama yang digunakan oleh objek dengan jenis yang sama, fungsi berhasil, mengembalikan handel ke objek yang ada, dan GetLastError mengembalikan ERROR_ALREADY_EXISTS. Misalnya, jika nama yang ditentukan dalam panggilan ke fungsi CreateMutex cocok dengan nama objek mutex yang ada, fungsi mengembalikan handel ke objek yang ada. Dalam hal ini, panggilan ke CreateMutex setara dengan panggilan ke fungsi OpenMutex . Memiliki beberapa proses menggunakan CreateMutex untuk mutex yang sama oleh karena itu setara dengan memiliki satu proses yang memanggil CreateMutex sementara proses lain memanggil OpenMutex, kecuali bahwa itu menghilangkan kebutuhan untuk memastikan bahwa proses pembuatan dimulai terlebih dahulu. Namun, saat menggunakan teknik ini untuk objek mutex, tidak ada proses panggilan yang harus meminta kepemilikan langsung atas mutex. Jika beberapa proses meminta kepemilikan segera, mungkin sulit untuk memprediksi proses mana yang benar-benar mendapatkan kepemilikan awal.

Lingkungan Layanan Terminal memiliki namespace layanan global untuk peristiwa, semaphores, mutex, timer yang dapat di tunggu, objek pemetaan file, dan objek pekerjaan. Selain itu, setiap sesi klien Layanan Terminal memiliki namespace layanan terpisah sendiri untuk objek ini. Proses klien Layanan Terminal dapat menggunakan nama objek dengan awalan "Global\" atau "Local\" untuk secara eksplisit membuat objek di namespace layanan global atau sesi. Untuk informasi selengkapnya, lihat Namespace Objek Kernel. Peralihan pengguna cepat diimplementasikan menggunakan sesi Layanan Terminal (setiap pengguna masuk ke sesi yang berbeda). Nama objek kernel harus mengikuti panduan yang diuraikan untuk Layanan Terminal sehingga aplikasi dapat mendukung beberapa pengguna.

Objek sinkronisasi dapat dibuat di namespace privat. Untuk informasi selengkapnya, lihat Namespace Objek.

Menggunakan Objek Bernama