RegOpenKeyEx冗余参数?

时间:2012-04-22 11:45:57

标签: windows api

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

  

ulOptions

This parameter is reserved and must be zero.

放置这个形式参数的原因是什么,而它总是必须是相同的值?

3 个答案:

答案 0 :(得分:2)

该参数很可能意味着早期版本的操作系统,甚至可能预发布内部版本。但它控制的功能已被删除,或从未公开发布。

一旦构建了使用该参数的二进制文件,MS就不会想要更改该函数的签名。这样做会打破那些预先存在的二进制文件。

答案 1 :(得分:1)

官方Microsoft文档除了wine code之外没有说任何内容:RegKeyOpenEx()接受REG_OPTION_OPEN_LINK options的值,对于注册表项是{{1}}链接,打开链接本身而不是跟随链接并打开目标。

然而,由于它不在官方文档中,我不建议使用它。由于Micrsoft没有提及它,他们没有正式支持它,并且是免费的(在实际限制内)来阻止在Windows更新或其他任何工作。

Microsoft可以自由地将他们喜欢的任何参数添加到他们的函数中,只是为了有一个参数可以在以后使用。它可以节省他们必须创建新功能(尽管他们似乎在这方面做得不太好)。

答案 2 :(得分:0)

微软刚刚提前规划,允许将来通过选项而不会破坏API。

始终将其设置为零现在可以防止应用程序中断,以防它们在将来更改API处理该参数的方式。该参数现在很可能被忽略,但是说你开始向它传递42,并且在下一个版本的windows中,他们决定基于该参数实际改变行为。现在您的应用程序表现不同。

故事的道德:坚持文档所说的内容。