私が使用しているIDLのいくつかでは、メソッドで戻り値をマークするための2つの規則があることに気づきました-[in, out]
と[out, retval]
。
[in, out]
たとえば、次のように、複数の戻り値がある場合に使用されるようです。
HRESULT MyMethod(
[in] long InputParam,
[in, out] long* OutputParam1,
[in, out] long* OutputParam2
);
[out, retval]
たとえば、戻り値が1つしかない場合に使用されるようです。
HRESULT MyMethod2(
[in] long InputParam,
[out, retval] long* OutputParam1
);
これはCOMIDL規則ですか、それとも私が使用しているコードの規則ですか?
2つの表記から生成されるコードに機能的な違いはありますか、それとも完全に互換性がありますか?