#winapi #registry
#winapi #реестр
Вопрос:
Читая документацию Microsoft по RegOpenKeyEx и RegCloseKey, я не уверен, нужно ли мне вызывать функцию закрытия в случае сбоя RegOpenKeyEx.
Пожалуйста, укажите мне точный источник, указывающий, нужно ли мне всегда вызывать RegCloseKey или его нужно вызывать только тогда, когда RegOpenKeyEx возвращает ERROR_SUCCESS .
Ссылки:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724837(v=vs.85).aspx
Ответ №1:
RegOpenKeyEx
вернет только допустимый дескриптор ключа, если ERROR_SUCCESS
это возвращаемое значение. Именно здесь вызывающий отвечает за закрытие ключа, в противном случае закрытие не требуется, и ключ не открывается. Это предполагаемое соглашение об ответственности за закрытие открытого дескриптора, хотя оно явно не указано в документации по функциям RegOpenKeyEx.
Это также согласуется с примерами API. Если вы не уверены после проверки примера кода в статье MSDN, вот еще один: http://msdn.microsoft.com/en-us/library/aa384182(VS.85).aspx
Комментарии:
1. Спасибо — я предполагаю, что это так, но я ищу что-то определенное. Я отмечу этот ответ как принятый, если больше ничего не появится.
Ответ №2:
Я думаю, если вы посмотрите на пример, приведенный под вашими ссылочными ссылками, вы увидите, что он не вызывает RegCloseKey, если lResult не возвращает ERROR_SUCCESS
Это ссылка на него:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724235 (v= против 85).aspx