Aracılığıyla paylaş


Ç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.

bir olay nesnesi oluşturma uygulaması

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.

uygulama, birden çok tanıtıcıya sahip bir olay nesnesi oluşturma

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.

bellek 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.

iki dosya tanıtıcısı aynı dosya nesnesine başvurur

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.

 

çekirdek nesne ad alanlarını