私が扱うIDLの中には、メソッドに戻り値をマーキングするための2つの慣習があることに気がついています - [in, out]
と[out, retval]
。COM IDL定義の[in、out]と[out、retval]の相違点
複数の戻り値がある場合[in, out]
は、例えば、使用されると思われる:
HRESULT MyMethod2(
[in] long InputParam,
[out, retval] long* OutputParam1
);
:
HRESULT MyMethod(
[in] long InputParam,
[in, out] long* OutputParam1,
[in, out] long* OutputParam2
);
単一の戻り値がある場合[out, retval]
は、例えば、使用されると思われます
これはCOM IDLの規約ですか、それとも私が作業しているコードの慣例ですか?
2つの表記法から生成されるコードに機能的な違いがありますか、または完全に互換性がありますか?
有用な説明をありがとう。 – LeopardSkinPillBoxHat
私は '[in、out]'がすべての言語(具体的にはold-school Visual Basic、.NETについては不明)で正しく処理されない可能性があると付け加えたいと思います。 –
実行中にエラーが発生した場合にエラーコード(HRESULT)を取得する方法がないため、[out、retval]がCOMインターフェイスを定義するベストプラクティスに反しているのだろうか? – dave