Spojrzałem na dokumenty dla DuplicateHandle
innego dnia i zauważyłem, że DuplicateHandle jest w stanie skopiować klucze rejestru (HKEY
s). Odczytanie tego nieco więcej w książce SysInternals wydaje się wskazywać, że uchwyty kluczy rejestru są zwykłymi obiektami jądra, podobnymi do uchwytów plików. Jednak CloseHandle
nie może zamknąć HKEY
s, a RegCloseKey
nie może zamykać innych rodzajów obiektów jądra.Dlaczego istnieje RegCloseKey (kiedy CloseHandle wydaje się wykonywać tę samą funkcję)?
Dlaczego rozróżnienie?
Hmm, mogę tylko zgadywać, że HKEY zostały wprowadzone wcześniej (w Windows 3.1), a następnie Microsoft nie chciał ujednolicić interfejsów, mimo że implementacje zostały scalone. – Philipp
Właśnie zgaduję tutaj: Na końcu dokumentacji dla 'CloseHandle()' mówi: > Zamknięcie rączki wątku nie kończy powiązanego wątku lub usuwa obiekt wątku. Zamknięcie uchwytu procesu nie kończy powiązanego procesu ani nie usuwa obiektu procesu. Aby usunąć obiekt wątku, należy zakończyć wątek, a następnie zamknąć wszystkie uchwyty do wątku. Aby uzyskać więcej informacji, zobacz Zakończenie wątku. Aby usunąć obiekt procesu, należy zakończyć proces, a następnie zamknąć wszystkie uchwyty do procesu. Podczas zamykania klucza rejestru mogą wystąpić podobne operacje. – yasouser
@Philipp: Tak też myślałem, z wyjątkiem np. CreateFile znajdowały się w Win3.1 dni (jeśli się nie mylę) i nie ma funkcji "CloseFile". –