共用方式為


介面代理檔案

介面 Proxy 檔案 (U_p.c) 是 C 檔案,其中包含相當於物件 (COM) 介面之用戶端存根和伺服器存根檔案中的例程。 此檔案包含編譯程式內嵌模式中用戶端和伺服器的代理例程實作,或解譯模式中的對等數據和 Thunks,以及其他適當的 COM 黏附數據,例如 Proxy 和存根 Vtable。

介面 Proxy 檔案只包含目前 IDL 檔案中所定義介面方法的支援例程和數據。 為了釐清此行為,本節中會使用擴充範例。 使用繼承自 IFaceA 的 IFaceB 這類介面編譯 IDL 檔案時,會將 IFaceB 相關的輔助數據和例程產生至目前的 Proxy 檔案,而基底介面 IFaceA 相關輔助數據和例程則會在包含 IFaceA 定義的 IDL 檔案所產生的 Proxy 中找到。 編譯程式會產生識別基底介面代理所需的所有數據,並在需要時委派給基底介面,以支援透過IFaceB介面使用的IFaceA方法。

對於目前IDL檔案中介面中的每個方法,在混合模式中編譯時,Proxy 檔案會包含下列兩個代理方法(/Os),以及在解釋器模式中編譯時的對等解釋器數據(/Oi)。

  • 用戶端代理,例如此範例中的IFaceB_Method_Proxy。

    此客戶端代理是客戶端調度的虛擬進入點,例如 IFaceB::Method。 它將輸入引數封送成可傳輸的形式,傳輸這些封送的引數以及識別介面和操作的資訊,然後在執行的操作返回時,將返回值和任何輸出引數取消封送。

  • 例如,以伺服器端代理 IFaceB_Method_Stub 為例。

    此伺服器端代理程序是底層執行環境在伺服器上分派的虛擬進入點,以模擬用戶端的行為。 它會解封送輸入參數以複製用戶端數據,呼叫伺服器的接口函數實現,然後封送處理並回傳傳回值和任何輸出參數給用戶端。

從 file.idl 產生的 Proxy 檔案預設名稱為 file_p.c.使用 /proxy MIDL 編譯程式參數來覆寫介面 Proxy 檔案的預設名稱。 /env/out 參數會影響此檔案。