Geçen gün DuplicateHandle
için dokümanlar arıyordum ve DuplicateHandle'ın kayıt defteri anahtar tutamaçlarını (HKEY
s) kopyalayabildiğini fark ettim. SysInternals kitabında bunu biraz daha okumak, kayıt defteri tutamaçlarının dosya tanıtıcılarına benzer düz kernel nesneler olduğunu gösteriyor gibi görünüyor. Yine de CloseHandle
, HKEY
s'yi kapatamaz ve RegCloseKey
diğer türlü çekirdek nesnelerini kapatamaz.RegCloseKey neden var (CloseHandle aynı işlevi gerçekleştiriyor gibi görünüyor)?
Neden ayrım?
Hmm, Sadece HKEY'lerin daha önce (Windows 3.1'de) tanıtıldığını tahmin edebilirim ve sonra Microsoft, uygulamaların birleştirilmesine rağmen arabirimleri birleştirmek istemedi. – Philipp
Sadece burada tahmin ediyorum: 'CloseHandle()' belgelerinin sonunda: > Bir iş parçacığı tanıtıcısını kapatmak ilişkili iş parçacığını sonlandırmaz veya iş parçacığı nesnesini kaldırır. Bir işlem tanıtıcısını kapatmak, ilişkili işlemi sonlandırmaz veya işlem nesnesini kaldırmaz. Bir iş parçacığı nesnesini kaldırmak için iş parçacığını sonlandırmanız, ardından tüm tanıtıcıları iş parçacığına kapatmanız gerekir. Daha fazla bilgi için, bkz. Bir İş Parçasının Sona Erdirilmesi. Bir işlem nesnesini kaldırmak için işlemi sonlandırmanız, ardından tüm tanıtıcıları işleme almanız gerekir. Bir kayıt defteri anahtarını kapatırken benzer işlemler yapılabilir. – yasouser
@Philipp: Ben de öyle düşündüm. CreateFile, Win3.1 günlerinde (yanılmadıysam) etrafındaydı ve "CloseFile" işlevi yok. –