C# の GMFBridge directshow フィルターを使用していますが、インポート ライブラリが HRESULT を破棄しているようです。すなわち
[id(5), helpstring("Create render filters in empty render graph")]
HRESULT CreateRenderGraph(
[in] IUnknown* pSourceGraphSinkFilter,
[in] IUnknown* pRenderGraph,
[out, retval] IUnknown** pRenderGraphSourceFilter);
[id(6), helpstring("Connect two graphs")]
HRESULT BridgeGraphs(
[in] IUnknown* pSourceGraphSinkFilter,
[in] IUnknown* pRenderGraphSourceFilter);
(midl.exe および tlbimp.exe によって) 次のように変換されます。
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(5)]
object CreateRenderGraph([In, MarshalAs(UnmanagedType.IUnknown)] object pSourceGraphSinkFilter, [In, MarshalAs(UnmanagedType.IUnknown)] object pRenderGraph);
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(6)]
void BridgeGraphs([In, MarshalAs(UnmanagedType.IUnknown)] object pSourceGraphSinkFilter, [In, MarshalAs(UnmanagedType.IUnknown)] object pRenderGraphSourceFilter);
私がインポートした他の COM ライブラリは、戻り値を出力パラメーターとして変換し、元の COM メソッドの HRESULT 戻り値を保持します。このライブラリの動作が異なるのはなぜですか? 他の動作を強制することは可能ですか?
ありがとう、アンディ