[英]How to pass IUnknown argument to a COM interface using C#?
我有一個像這樣定義的COM接口
interface Client : IUnknown
{
[id(1)] HRESULT GetSomething
(
enum SomeID someID,
[out] IUnknown **pUnknown
);
};
如何使用C#傳遞IUnknown
對象?
您不傳遞任何內容,它返回一個接口指針。 一個不透明的IUnknown由所有COM接口實現。 在C#中,它將是object類型的對象 ,托管版本為“可以是任何東西”。 因此基本代碼如下所示:
object retval;
client.GetSomething(SomeID.Magic, out retval);
然后由您決定將返回的對象轉換為實際的接口類型,可能基於Magic 。 您的問題絲毫沒有暗示任何可能,您必須閱讀COM組件的文檔才能有一個主意。
假設你不知道對象什么 ,你可能會使用一個IntPtr來表示IUnknown和然后得到一個RCW它使用Marshal.GetUniqueObjectForIUnknown :
// Get some object
IntPtr ptrObj = IntPtr.Zero;
Client.GetSomething(someID, out ptrObj);
object obj = Marshal.GetUniqueObjectForIUnknown(ptrIProfferService);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.