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.
この正式なパラメータを配置する理由は何でしたか?それは常に同じ値でなければなりませんか?
そのパラメータは、OSの以前のバージョン、場合によってはプレリリースの内部バージョンの何かを意味している可能性があります。ただし、制御されていた機能は削除されているか、公開されていません。
そのパラメータを使用するバイナリが構築されると、MSは関数のシグネチャを変更することを望まなかったでしょう。そうすることで、それらの既存のバイナリを壊してしまうでしょう。
公式のMicrosoftドキュメントは、ワインコード以外は何も述べていません。値をRegKeyOpenEx()
受け入れます。これは、リンクであるレジストリキーの場合、リンクをたどってターゲットを開くのではなく、リンク自体を開きます。REG_OPTION_OPEN_LINK
options
ただし、公式ドキュメントにはないので、使用することはお勧めしません。Micrsoftはそれについて言及していないので、公式にはサポートしておらず、Windows Updateなどでの動作を(実用的な制限内で)自由に停止できます。
Microsoftは、後で使用するパラメーターを設定するために、関数に好きなパラメーターを自由に追加できます。これにより、新しい関数を作成する手間を省くことができます(ただし、その点ではあまりうまく機能していないようです)。
Microsoftは、APIを壊すことなく将来オプションを渡すことができるように、前もって計画を立てていました。
常にゼロに設定すると、APIが将来そのパラメーターを処理する方法が変更された場合に、アプリケーションが破損するのを防ぐことができます。このパラメーターは今のところ無視される可能性が高いですが、42を渡し始めたとすると、次のバージョンのWindowsでは、そのパラメーターに基づいて実際に動作を変更することにします。これで、アプリケーションの動作が異なります。
話の教訓:ドキュメントの内容を順守してください。