我正在使用来自 c# 的 GMFBridge directshow 过滤器,并且导入库似乎丢弃了 HRESULT。IE
[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 返回值。为什么这个库的行为不同?是否可以强制其他行为?
谢谢,安迪