Partilhar via


O arquivo proxy da interface

O arquivo proxy de interface (U_p.c) é um arquivo C que contém rotinas equivalentes às dos arquivos de stub do cliente e do servidor de uma interface de objeto (COM). Este arquivo contém implementações das rotinas substitutas para cliente e servidor no modo inline do compilador ou dados equivalentes e thunks nos modos interpretados, bem como outros dados de cola COM apropriados, como o proxy e o stub Vtables.

O arquivo proxy de interface inclui as rotinas de suporte e 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, dados auxiliares relacionados a IFaceB e rotinas são gerados para o arquivo proxy atual, enquanto os dados auxiliares e rotinas relacionados a 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 suportar os métodos IFaceA usados através da interface IFaceB.

Para cada método em uma interface no arquivo IDL atual, o arquivo proxy contém os seguintes dois métodos substitutos quando compilados no modo misto (/Os), e dados interpretadores equivalentes quando compilados no modo interpretador (/Oi).

  • O substituto do lado do cliente, como IFaceB_Method_Proxy neste exemplo.

    Este substituto do lado do cliente é o ponto de entrada virtual para o qual o cliente, por exemplo IFaceB::Method, despacha. Organiza os argumentos de entrada numa forma transmissível, transmite os argumentos organizados juntamente com informações que identificam a interface e a operação, e, em seguida, desempacota o valor de retorno e quaisquer argumentos de saída quando a operação invocada retorna.

  • O substituto do lado do servidor, por exemplo, IFaceB_Method_Stub .

    Este substituto do lado do servidor é o ponto de entrada virtual para o qual o ambiente de execução subjacente é despachado para o servidor para emular o cliente. Deserializa os argumentos de entrada para replicar os dados do cliente, invoca a implementação do servidor da interface e, em seguida, serializa e transmite o valor de retorno e quaisquer argumentos de saída de volta para o cliente.

O nome padrão para um arquivo proxy gerado a partir de um file.idl é file_p.c.Use a opção de compilador /proxy MIDL para substituir o nome padrão do arquivo proxy da interface. As opções /env e /out afetam esse arquivo.