簡體   English   中英

如何使用C#將IUnknown參數傳遞給COM接口?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM