Если RegOpenKeyEx не возвращает ERROR_SUCCESS, я гарантирую, что HKEY не был открыт? - PullRequest
1 голос
/ 05 октября 2011

Чтение документации Microsoft по RegOpenKeyEx и RegCloseKey. Я не уверен, нужно ли мне вызывать функцию закрытия в случае сбоя RegOpenKeyEx.

Пожалуйста, укажите мне точный источник, указывающий, нужно ли мне всегда вызывать RegCloseKey илиесли он должен вызываться только когда RegOpenKeyEx возвращает ERROR_SUCCESS.

Ссылки:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724837%28v=vs.85%29.aspx

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

RegOpenKeyEx вернет действительный дескриптор ключа, только если ERROR_SUCCESS - возвращаемое значение.В этом случае вызывающая сторона отвечает за закрытие ключа, в противном случае закрытие не требуется и ключ не открывается.Это предполагаемое соглашение об ответственности за закрытие открытого дескриптора, хотя это явно не упомянуто в документации функция RegOpenKeyEx .

Это также согласуется в примерах APIЕсли вы не уверены после проверки примера кода в статье MSDN, вот еще один: http://msdn.microsoft.com/en-us/library/aa384182%28VS.85%29.aspx

1 голос
/ 05 октября 2011

Я думаю, что если вы посмотрите на пример, указанный под ссылочными ссылками, вы увидите, что он не вызывает RegCloseKey, если lResult не возвращает ERROR_SUCCESS

Это ссылка на него:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724235(v=vs.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...