0
我正在使用來自c#的GMFBridge directshow過濾器,導入庫似乎放棄HRESULT。即如何從使用tlbimp.exe導入到C#的庫中獲取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是)成:我已經導入爲出參數轉換返回的值,並保留原始的HRESULT返回值
[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方法。爲什麼這個庫的行爲有所不同?是否有可能強迫其他行爲?
感謝, 安迪
我明白了。沒關係,如果沒有機會我會錯過一個錯誤。其他互操作庫由第三方提供,所以我猜它們必須是手動創建的。 – 2010-08-24 10:05:26
對,你不需要手動檢查你的HRESULT – 2010-08-24 10:17:50