http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897%28v=vs.85%29.aspx
ulOptions
This parameter is reserved and must be zero.
放置这个形式参数的原因是什么,而它总是必须是相同的值?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897%28v=vs.85%29.aspx
ulOptions
This parameter is reserved and must be zero.
放置这个形式参数的原因是什么,而它总是必须是相同的值?
该参数很可能意味着早期版本的操作系统,甚至可能是预发布的内部版本。但它控制的功能已被删除,或者从未公开发布。
一旦构建了使用该参数的二进制文件,MS 就不会想要更改函数的签名。这样做会破坏那些预先存在的二进制文件。
微软官方文档除了wine 代码之外什么也没说:RegKeyOpenEx()
接受REG_OPTION_OPEN_LINK
值 to options
,在注册表项是链接的情况下,它会打开链接本身,而不是跟随链接并打开目标。
但是由于它不在官方文档中,我不建议使用它。由于 Micrsoft 没有提及它,因此他们没有正式支持它,并且可以免费(在实际限制内)阻止它在 Windows 更新或其他方式中工作。
微软可以自由地将他们喜欢的任何参数添加到他们的函数中,只是为了有一个参数供以后使用。它可以让他们不必创建新功能(尽管他们在这方面似乎做得不太好)。
微软只是提前计划,允许将来在不破坏 API 的情况下传递选项。
现在始终将其设置为零可以防止应用程序崩溃,以防它们将来更改 API 处理该参数的方式。该参数现在很可能被忽略,但是假设您开始将 42 传递给它,并且在下一版本的 windows 中,他们决定根据该参数实际更改行为。现在您的应用程序的行为有所不同。
故事的寓意:遵守文档所说的内容。