O arquivo proxy de interface
O arquivo proxy de interface (U_p.c) é um arquivo C que contém rotinas equivalentes às dos arquivos stub do cliente e stub do servidor de uma interface COM (objeto). Esse arquivo contém implementações das rotinas alternativas para cliente e servidor no modo embutido do compilador ou dados equivalentes e conversões nos modos interpretados, bem como outros dados de associação COM apropriados, como as Vtables de proxy e stub.
O arquivo proxy de interface inclui as rotinas de suporte e os dados somente para métodos das interfaces definidas no arquivo IDL atual. Para esclarecer esse comportamento, um exemplo estendido é usado ao longo desta seção. Ao compilar um arquivo IDL com uma interface como IFaceB que herda de IFaceA, os dados auxiliares relacionados ao IFaceB e as rotinas são gerados para o arquivo proxy atual, enquanto os dados auxiliares relacionados à IFaceA da interface base são encontrados no proxy gerado a partir do arquivo IDL que contém a definição IFaceA. O compilador gera todos os dados necessários para identificar os substitutos da interface base e delegar a eles quando necessário para dar suporte aos métodos IFaceA usados por meio da interface IFaceB.
Para cada método em uma interface no arquivo IDL atual, o arquivo proxy contém os dois métodos alternativos a seguir quando compilados no modo misto (/Os) e dados equivalentes do interpretador quando compilados no modo interpretador (/Oi).
O substituto do lado do cliente, como IFaceB_Method_Proxy neste exemplo.
Esse substituto do lado do cliente é o ponto de entrada virtual para o qual o cliente, por exemplo, IFaceB::Method, despacha. Ele realiza marshaling dos argumentos de entrada em um formulário transmitível, transmite os argumentos marshaled juntamente com informações que identificam a interface e a operação e, em seguida, cancela a gravação do valor retornado e quaisquer argumentos de saída quando a operação invocada retorna.
O substituto do lado do servidor, por exemplo, IFaceB_Method_Stub .
Esse substituto do lado do servidor é o ponto de entrada virtual para o qual o runtime subjacente despacha no servidor para emular o cliente. Ele desmarca os argumentos de entrada para replicar os dados do cliente, invoca a implementação do servidor da função de interface e, em seguida, realiza marshaling e transmite o valor retornado e quaisquer argumentos de saída de volta para o lado do cliente.
O nome padrão de um arquivo proxy gerado de um file.idl é file_p.c.Use a opção do compilador MIDL /proxy para substituir o nome padrão do arquivo proxy de interface. As opções /env e /out afetam esse arquivo.