使用 MIDL
使用 RPC 之程式的所有介面都必須定義在 Microsoft 介面定義語言 (MIDL) ,並使用 MIDL 編譯器編譯。 下列主題提供建立和編譯 MIDL 介面的簡短概觀:
如需這些主題的詳細討論,請參閱 IDL 和 ACF 檔案。
MIDL 檔案是您可以使用文字編輯器建立和編輯的文字檔。 如果您為介面產生 UUID,您通常會將輸出儲存在範本 MIDL 檔案中。 如需 UUID 的詳細資訊,請參閱 產生介面 UUID。
MIDL 中的所有介面都遵循相同的格式。 其開頭為標頭,其中包含介面屬性清單和介面名稱。 屬性會以方括弧括住。 介面標頭後面接著其主體,並以大括弧括住。 下列範例會顯示簡單的介面:
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface MyInterface
{
const unsigned short INT_ARRAY_LEN = 100;
void MyRemoteProc(
[in] int param1,
[out] int outArray[INT_ARRAY_LEN]
);
}
一些通常出現在 MIDL 介面定義中的屬性是 UUID 和介面版本號碼。 介面定義的主體必須包含介面中所有遠端程式的程式宣告。 它也可以包含 介面所需的資料類型和常數宣告。
遠端程式宣告中的所有參數都必須宣告為 [in]、[out]或 [in, out]。 這些宣告會指定用戶端程式將資料傳遞至遠端程式、從遠端程式取得資料,或兩者。 如需介面參數宣告的詳細資訊,請參閱 IDL 介面主體。
MIDL 編譯器是一種命令列工具,會自動安裝平臺軟體發展工具組 (SDK) 。 在命令視窗中輸入 midl命令,後面接著在命令列的 MIDL 檔案名,以叫用它。 請確定包含 MIDL 編譯器的目錄位於您的路徑中。 下列範例說明其用法:
midl MyApp.idl
請注意,如果檔案名具有 .idl 副檔名,則不需要包含副檔名。 您也可以在 midl 命令與檔案名之間插入MIDL編譯器命令列參數。 在下列範例中會示範這點:
midl /acf MyApp.acf MyApp.idl
在此範例中,MIDL 編譯器會使用 MyApp.idl 檔案作為輸入檔來執行。 命令列參數 /acf 會指示編譯器使用應用程式組態檔 (ACF) 輸入。 在 IDL 和 ACF 檔案中,會更徹底地討論應用程式組態檔。
如需使用 MIDL 編譯器的詳細資訊,請參閱 Microsoft 介面定義語言 (MIDL) ,其中包含下列主題的相關資訊: