介面 Proxy 檔案
介面 Proxy 檔案 (U_p.c) 是 C 檔案,其中包含與物件之用戶端存根和伺服器存根檔案中的常式相等的 C 檔案, (COM) 介面。 此檔案包含編譯器內嵌模式中用戶端和伺服器的代理常式實作,或解譯模式中的對等資料和 Thunks,以及其他適當的 COM 黏附資料,例如 Proxy 和存根 Vtable。
介面 Proxy 檔案只包含目前 IDL 檔案中所定義介面方法的支援常式和資料。 為了厘清此行為,本節會使用擴充範例。 使用繼承自 IFaceA 的 IFaceB 之類的介面編譯 IDL 檔案時,IFaceB 相關的輔助資料和常式都會產生至目前的 Proxy 檔案,而基底介面 IFaceA 相關輔助資料和常式則會在包含 IFaceA 定義的 IDL 檔案所產生的 Proxy 中找到。 編譯器會產生識別基底介面代理所需的所有資料,並在需要時委派給它們,以支援透過 IFaceB 介面使用的 IFaceA 方法。
針對目前 IDL 檔案中介面中的每個方法,Proxy 檔案會在混合模式中編譯 (/Os) 時包含下列兩個 Surrogate 方法,以及在解譯器模式中編譯時相等解譯器資料, (/Oi) 。
用戶端代理,例如此範例中的IFaceB_Method_Proxy。
此用戶端 Surrogate 是用戶端分派的虛擬進入點,例如 IFaceB::Method。 它會將輸入引數封送處理成可傳輸的形式、傳送封送處理引數以及識別介面和作業的資訊,然後在叫用的作業傳回時取消封送處理傳回值和任何輸出引數。
例如,伺服器端代理IFaceB_Method_Stub 。
這個伺服器端代理是基礎執行時間在伺服器上分派以模擬用戶端的虛擬進入點。 它會取消封送處理輸入引數以複寫用戶端資料、叫用伺服器的介面函式實作,然後將傳回值和任何輸出引數封送處理並傳輸回用戶端。
從 file.idl 產生的 Proxy 檔案預設名稱是 file_p.c.使用 /proxy MIDL 編譯器參數覆寫介面 Proxy 檔案的預設名稱。 /env和/out參數會影響此檔案。