Tôi đã xem tài liệu cho DuplicateHandle
vào ngày khác và nhận thấy rằng DuplicateHandle có thể sao chép các chốt xử lý khóa đăng ký (HKEY
s). Đọc thêm về điều này một chút trong cuốn sách SysInternals dường như chỉ ra rằng các chốt khóa registry là các đối tượng hạt nhân đơn giản, tương tự như các tập tin xử lý. Tuy nhiên, CloseHandle
không thể đóng HKEY
s và RegCloseKey
không thể đóng các loại đối tượng hạt nhân khác.Tại sao RegCloseKey tồn tại (khi CloseHandle có vẻ thực hiện cùng chức năng)?
Tại sao nên phân biệt?
Hmm, tôi chỉ có thể đoán rằng HKEY đã được giới thiệu trước đó (trong Windows 3.1), và sau đó Microsoft không muốn hợp nhất các giao diện ngay cả khi việc triển khai đã được hợp nhất. – Philipp
Tôi chỉ đoán ở đây: Vào cuối tài liệu cho 'CloseHandle()' nó nói: > Đóng chốt xử lý không chấm dứt chuỗi liên kết hoặc xóa đối tượng chuỗi. Đóng trình xử lý không chấm dứt quá trình liên quan hoặc loại bỏ đối tượng quy trình. Để loại bỏ một đối tượng chuỗi, bạn phải chấm dứt luồng, sau đó đóng tất cả các chốt xử lý vào luồng. Để biết thêm thông tin, hãy xem Chấm dứt một Chủ đề. Để loại bỏ một đối tượng quá trình, bạn phải chấm dứt quá trình, sau đó đóng tất cả các xử lý cho quá trình. Có thể thực hiện các thao tác tương tự trong khi đóng khóa đăng ký. – yasouser
@Philipp: Đó cũng là những gì tôi nghĩ, ngoại trừ ví dụ: CreateFile nằm trong Win3.1 ngày (nếu tôi không nhầm), và không có chức năng "CloseFile". –