Çekirdek Nesneleri
Çekirdek nesne tanıtıcıları işleme özeldir. Diğer bir ifadeyle, bir işlemin bir çekirdek nesne tutamacını elde etmek için nesneyi oluşturması veya var olan bir nesneyi açması gerekir. Çekirdek tanıtıcılarında işlem başına sınır 2^24'dür. Ancak, tanıtıcılar disk belleği havuzuna depolanır, bu nedenle oluşturabileceğiniz gerçek tanıtıcı sayısı kullanılabilir belleği temel alır. 32 bit Windows'ta oluşturabileceğiniz tanıtıcı sayısı 2^24'ten önemli ölçüde düşüktür.
İşlemin nesnenin adını bilmesi ve nesneye güvenlik erişimi olması koşuluyla, herhangi bir işlem var olan bir çekirdek nesnesine (başka bir işlem tarafından oluşturulan bir nesne bile) yeni bir tanıtıcı oluşturabilir. Çekirdek nesne tanıtıcıları, bir işleme verilebilen veya reddedilebilen eylemleri belirten erişim hakları içerir. Uygulama, bir nesne oluşturduğunda veya var olan bir nesne tanıtıcısını edindiğinde erişim haklarını belirtir. Her çekirdek nesnesi türü kendi erişim hakları kümesini destekler. Örneğin, olay tanıtıcıları ayarlama veya bekleme erişimine (veya her iki erişime) sahip olabilir, dosya tanıtıcıları okuma veya yazma erişimine (veya her ikisinde) sahip olabilir ve bu şekilde devam edebilir. Daha fazla bilgi için bkz. Güvenliği Sağlanabilir Nesneler.
Aşağıdaki çizimde bir uygulama bir olay nesnesi oluşturur. CreateEvent işlevi olay nesnesini oluşturur ve bir nesne tanıtıcısı döndürür.
Olay nesnesi oluşturulduktan sonra, uygulama olayı ayarlamak veya beklemek için olay tutamacını kullanabilir. Uygulama tanıtıcıyı kapatana veya sonlandırana kadar tanıtıcı geçerli kalır.
Çoğu çekirdek nesnesi, tek bir nesne için birden çok tanıtıcıyı destekler. Örneğin, yukarıdaki çizimdeki uygulama, aşağıdaki çizimde gösterildiği gibi OpenEvent işlevini kullanarak ek olay nesnesi tanıtıcıları elde edebilir.
Bu yöntem, bir uygulamanın farklı erişim haklarına sahip tanıtıcılara sahip olmasını sağlar. Örneğin, Tanıtıcı 1 olaya erişimi ayarlayıp beklemiş ve Tanıtıcı 2 yalnızca bekleme erişimine sahip olabilir.
Başka bir işlem olay adını biliyorsa ve nesneye güvenlik erişimine sahipse, OpenEventkullanarak kendi olay nesnesi tanıtıcısını oluşturabilir. Ayrıca oluşturma uygulaması, DuplicateHandle işlevini kullanarak tanıtıcılarından birini aynı işleme veya başka bir işleme çoğaltabilir.
En az bir nesne tutamacı olduğu sürece nesne bellekte kalır. Aşağıdaki çizimde, uygulamalar olay nesnesi tanıtıcılarını kapatmak için CloseHandle işlevini kullanır. Olay tanıtıcısı olmadığında, sistem aşağıdaki çizimde gösterildiği gibi nesneyi bellekten kaldırır.
nesne kaldırmak için uygulama kapatma olay nesnesi tanıtıcıları
Sistem, dosya nesnelerini diğer çekirdek nesnelerinden biraz farklı yönetir. Dosya nesneleri, bir dosyada okunacak veya yazılacak bir sonraki bayta işaret eden dosya işaretçisini içerir. Bir uygulama yeni bir dosya tanıtıcısı oluşturduğunda sistem yeni bir dosya nesnesi oluşturur. Bu nedenle, bir sonraki çizimde gösterildiği gibi birden fazla dosya nesnesi diskteki tek bir dosyaya başvurabilir.
Disk
Aşağıdaki çizimde gösterildiği gibi, yalnızca yineleme veya devralma yoluyla birden fazla dosya tanıtıcısı aynı dosya nesnesine başvurabilir.
Aşağıdaki tabloda her bir nesnenin oluşturucu ve yok edici işlevleriyle birlikte çekirdek nesnelerinin her biri listelenmektedir. Oluşturucu işlevleri nesneyi ve nesne tutamacını oluşturur veya yeni bir var olan nesne tutamacını oluşturur. Destroyer işlevleri nesne tutamacını kapatır. Bir uygulama bir çekirdek nesnesine son tanıtıcıyı kapattığında, sistem nesneyi bellekten kaldırır.
Çekirdek nesnesi | Creator işlevi | Destroyer işlevi |
---|---|---|
Erişim belirteci | CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken, OpenThreadToken | CloseHandle |
Bildirimi değiştir | FindFirstChangeNotification | FindCloseChangeNotification |
İletişim cihazı | CreateFile | CloseHandle |
Konsol girişi | CONIN$ ile CreateFile | CloseHandle |
Konsol ekranı arabelleği | CREATEFileCONOUT$ ile | CloseHandle |
Masaüstü | GetThreadDesktop | Uygulamalar bu nesneyi silemez. |
Olay | CreateEvent, CreateEventExOpenEvent | CloseHandle |
Olay günlüğü | OpenEventLog, RegisterEventSource, OpenBackupEventLog | CloseEventLog |
Dosya | CreateFile | CloseHandleDeleteFile |
Dosya eşleme | CreateFileMappingOpenFileMapping | CloseHandle |
Dosya bul | FindFirstFile | FindClose |
Yığın | YığınOluştur | HeapDestroy |
G/Ç tamamlama bağlantı noktası | CreateIoCompletionPort | CloseHandle |
İş | CreateJobObject | CloseHandle |
Posta Grafiği | CreateMailslot | CloseHandle |
Bellek kaynağı bildirimi | createMemoryResourceNotification | CloseHandle |
Modül | LoadLibrary, GetModuleHandle | FreeLibrary |
Mutex | CreateMutex, CreateMutexExOpenMutex | CloseHandle |
Boru | CreateNamedPipeCreatePipe | CloseHandleDisconnectNamedPipe |
İşlem | CreateProcess, OpenProcessgetCurrentProcess | CloseHandleTerminateProcess |
Semafor | CreateSemaphore, CreateSemaphoreEx, OpenSemaphore | CloseHandle |
Priz | yuva kabul edin | closesocket |
İplik | CreateThread, CreateRemoteThreadGetCurrentThread | CloseHandleTerminateThread |
Zamanlayıcı | CreateWaitableTimer, CreateWaitableTimerExOpenWaitableTimer | CloseHandle |
Kaynağı güncelleştirme | BeginUpdateResource | EndUpdateResource |
Pencere istasyonu | GetProcessWindowStation | Uygulamalar bu nesneyi silemez. |
İlgili konular