定義封送處理類型
在建置封送處理器之前,您必須先定義要封送處理的 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++ 的介面定義。