如果RegOpenKeyEx没有返回ERROR_SUCCESS我保证HKEY没有打开吗?

时间:2011-10-05 17:27:47

标签: winapi registry

阅读RegOpenKeyEx和RegCloseKey上的Microsoft文档我不确定如果RegOpenKeyEx失败我是否需要调用close函数。

请指出一个明确的来源,说明我是否需要始终调用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 个答案:

答案 0 :(得分:2)

如果RegOpenKeyEx是返回值,

ERROR_SUCCESS将仅返回有效的键句柄。这是调用者负责关闭密钥的地方,否则不需要关闭并且不打开密钥。虽然未在RegOpenKeyEx function文档中明确提及,但这是关于关闭已打开句柄的责任的假定协议。

这在API样本中也是一致的。如果您在检查MSDN文章中的示例代码后不确定,请执行以下操作:http://msdn.microsoft.com/en-us/library/aa384182%28VS.85%29.aspx

答案 1 :(得分:1)

我认为如果你看一下你的参考链接下面列出的例子,你可以看到它没有调用RegCloseKey,如果lResult没有返回ERROR_SUCCESS

这是它的链接:

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