Gränssnittsproxyfilen

Gränssnittsproxyfilen (U_p.c) är en C-fil som innehåller rutiner som motsvarar dem i klientens stub- och server stub-filer i ett objektgränssnitt (COM). Den här filen innehåller implementeringar av surrogat-rutinerna för klient och server i det infogade läget för kompilatorn eller motsvarande data och thunks i de tolkade lägena, samt annan anpassad COM-bindningsdata, såsom proxy- och stub-Vtabeller.

Gränssnittsproxyfilen innehåller endast stödrutiner och data för metoder för de gränssnitt som definieras i den aktuella IDL-filen. För att förtydliga det här beteendet används ett utökat exempel i hela det här avsnittet. När du kompilerar en IDL-fil med ett gränssnitt som IFaceB som ärver från IFaceA genereras IFaceB-relaterade extradata och rutiner till den aktuella proxyfilen, medan basgränssnittet IFaceA-relaterade extradata och rutiner finns i proxyn som genereras från IDL-filen som innehåller IFaceA-definitionen. Kompilatorn genererar alla data som behövs för att identifiera surrogaterna för basgränssnittet och delegera till dem när det behövs för att stödja de IFaceA-metoder som används via IFaceB-gränssnittet.

För varje metod i ett gränssnitt i den aktuella IDL-filen innehåller proxyfilen följande två surrogatmetoder när den kompileras i blandat läge (/Os) och motsvarande tolkdata när de kompileras i tolkläget (/Oi).

  • Surrogat på klientsidan, till exempel IFaceB_Method_Proxy i det här exemplet.

    Den här surrogaten på klientsidan är den virtuella startpunkten som klienten, till exempel IFaceB::Method, skickar till. Den konverterar indataargumenten till ett överförbart formulär, överför de konverterade argumenten tillsammans med information som identifierar gränssnittet och åtgärden och tar sedan bort värdet för returen och eventuella utdataargument när den anropade åtgärden returneras.

  • Till exempel surrogat på serversidan, IFaceB_Method_Stub.

    Den här surrogaten på serversidan är den virtuella startpunkten som den underliggande exekveringsmiljön tilldelar på servern för att simulera klienten. Den tar bort indataargumenten för att replikera klientdata, anropar serverns implementering av gränssnittsfunktionen och skickar sedan returvärdet och eventuella utdataargument tillbaka till klientsidan.

Standardnamnet för en proxyfil som genereras från en file.idl är file_p.c.Använd växeln /proxy MIDL-kompilator för att åsidosätta standardnamnet för gränssnittsproxyfilen. Växlarna /env och /out påverkar den här filen.