共用方式為


定義封送處理型別

更新:2007 年 11 月

在建置封送處理器之前,您必須先定義要封送處理的 Managed 和 Unmanaged 介面。這些介面通常執行的是同樣的功能,但是以不同方式公開給 Managed 和 Unmanaged 物件。

Managed 編譯器 (Compiler) 會從中繼資料產生 Managed 介面,而且產生的介面看起來就像任何其他 Managed 介面一樣。以下程式碼範例所示就是這種典型的介面:

#using <mscorlib.dll>
interface INew {
    void NewMethod();
}

您必須在介面定義語言 (IDL) 中定義 Unmanaged 型別,並且用 MIDL 編譯器來編譯它。您必須在程式庫陳述式中定義這個介面,並且使用通用唯一識別項 (UUID) 屬性指派一個介面 ID 給它。

在 Old.idl 中

[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
     [uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
     interface IOld : IUnknown
         HRESULT OldMethod();
}

MIDL 編譯器會產生好幾個輸出檔。如果在 Old.idl 中定義介面,則輸出檔 Old_i.c 會以這個介面的介面識別項 (Interface Identifier) (IID) 定義 const 變數:

在 Old_i.c 中

const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};

Old.h 檔案也是由 MIDL 產生的。它含有可以被包含 (#include) 在 C++ 原始程式碼中的 C++ 的介面定義。

請參閱

概念

實作 ICustomMarshaler 介面

使用替代封送處理器

其他資源

自訂封送處理