跳至內容

Microsoft介面定義語言

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 23:53 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

Microsoft 介面定義語言(英語:Microsoft Interface Definition Language;縮寫:MIDL)是微軟的因為文字的介面描述語言。擴充自 DCE / RPC IDL 用就是微軟的組件物件模型(Component Object Model)。 伊的編譯器是 MIDL . exe(隨 Windows SDK 發行)。 MIDL 用佇遠端的程序呼叫 ( RPC ) 的介面、DCOM 介面、OLE 自動化的類型庫等等的描述 .

簡介

彼每一个 IDL 檔案包含一个抑是幾个仔 interface 定義。彼每一个 interface 定義由 interface 頭殼佮 interface 體組成。interface 頭殼予出介面的整體資訊;若是含關鍵字 object,表示講這是一个 COM 介面,抑無表示這是一个 DCE RPC 介面。interface 體共出來所有需要暴露的資訊。

IDL 檔案中一个介面的結構資訊:


IDL 檔案介面範例:

類型庫用於向編譯器提供關於類、介面、列舉等等的 COM 東西抑是 COM 介面的資訊。類型庫是二進位檔案。MIDL 編譯器處理 IDL 檔案閣建立類型庫檔案、標頭檔、proxy 檔案。比如講:

` ` ` midl myfilectl . idl / tlb myfilectl . tlb / h ` ` `

其中 / h 產生 C + + 標頭檔。

MIDL 編譯器編譯 name . idl 預設產生的檔案,對於 RPC 介面為 :

` ` ` Client stub ( name _ c . c ) Server stub ( name _ s . c ) Header file ( name . h ) ` ` `

對於 COM 介面預設產生的檔案 :

` ` ` Interface proxy / stub file ( name _ p . c ) ma-lá-tsih / 服侍器的 surrogate entry points Interface header file ( name . h ) 包含 IDL 文件當中定著的接口的被型定抹函函,以及 stub 交易用的子例程的前向光明。 Interface UUID file ( name _ i . c ) 承喙 ID 文件,定讞 IDL 文件中的每個接口的 GUID 鋪排放文件 ( name . tlb ) Dlldata . c 鋪建 proxy / stub DLL 所需要的被竭 ` ` `

若介面屬性列表內底有 local 屬性,編譯進產生介面的標頭檔,Name . h .

歷史

MIDL 三更零版支援按照類似 C # 語言的格式寫 idl 檔案。這要求使用 Windows SDK 十曉零 . 一孵七千一百三十四抹零版抑是以上,其實所包括的 midl . exe 是八○零一 . 六百二十二版抑是以上的,編譯的時陣使用 / winrt 選項。介面中的非 local 的成員函式返回類型只能是 HRESULT 抑是 SCODE,因為三允准轉去彼種版本允准倒轉去類型做 void,毋過這種三更零版本內底將編譯報毋著。

語言內容

伊欲介面會當共聲明,通好予人參照。

類型定義 ( typedef )、construct 聲明、import 指令(類似 C 語言預處理器 include 指令), 會用得出現佇 interface 體的外部。IDL 檔案遮的定義攏會出現佇產生的標頭檔中;所有的介面的所有的過程攏會去予建立 stub 常式。

MIDL 資料類型

陣列定義遵對 C 語言的標準,陣列下界必須為零。一對方括號內若干焦一个數,表示陣列下界為零上界為 N 影一;若是方括號內為 \ * 號,表示下界為零上界咧執行的時確定;[lower . . . upper] 明確予出上下限。真濟維陣列干焦上左維會使無佇咧編譯的時陣指定。

封裝的聯合類型(encapsulated union)是講類型的通過 switch 定義的判別資料成員(discriminant)嘛去予人封裝佇類型中。如下比如下:

類型庫

類型庫是二進位檔案 ( . tlb ) 包含一个 ActiveX 應用程式暴露的類型佮物件的資訊。可包括:

  • 資料類型資訊,如:aliases , enumerations , structures , unions .
  • 物件咧講,每一个這款的描寫叫做 typeinfo。如:module , interface , IDispatch interface ( dispinterface ) , component object class ( coclass ) . 會當理解講介面是抽象類,coclass 是介面的物理實現類。
  • 參與別類型庫的類型描述。

類型庫會當是 midl 編譯產生的單獨的二進位檔案 ( . tlb,表示 type library )。嘛會當用資源編譯器 ( rc . exe ) 共 . tlb 檔案增加到 DLL 抑是 exe 檔案中。帶有一个抑是濟的類型庫資源的 DLL 典型有副檔名 . olb ( object library ) . tlb 檔案佇資原始檔 ( . rc ) 著愛寫做是下形式按呢,帶有整數辨識符、類型做 TypeLib:

` ` ` 一 typelib mylib 一 . tlb 二 typelib mylib 二 . tlb ` ` `

共 tlb 登記佇咧 Windows 登錄檔,會用得 . NET FRAMEWOK 紮有的 regtlibv 十二 . exe,通常佇按呢的 kha-tá-lok-guh 落:

` ` ` C : \ WINDOWS \ Microsoft . NET \ Framework \ v 四配零 . 三更空三百一十九 \ regtlibv 十二 . exe ` ` `

各種的類型庫工具(如編譯器、object browser 等)通過 ITypeLib 按呢的介面存取二進位類型庫資訊。

類型庫是咧講語言是 ODL,上頂層的語法結構就是 library 語句。

MIDL 的資料類型當中,boolean 基礎類型等價於 VT \ _ UI 一;BOOL 資料類型予人定義做 long;若希望欲使用 VT \ _ BOOL,按呢應該用 VARIANT \ _ BOOL 資料類型。

下述代碼裝入並佇咧 Windows 登錄檔中註冊一个類型庫:

參見

  • 物件描述語言

參考文獻

外部連結

  • Microsoft Interface Definition Language-Win 三十二 apps | Microsoft Docs
  • Microsoft Interface Definition Language 三-c零 reference-Windows UWP applications | Microsoft Docs

參考文獻