Pipes (RPC)
O construtor de tipo de pipe é um mecanismo altamente eficiente para passar grandes quantidades de dados ou qualquer quantidade de dados que não esteja disponível na memória ao mesmo tempo. Usando um pipe, o tempo de execução do RPC manipula a transferência de dados real, eliminando a sobrecarga associada a chamadas de procedimento remoto repetidas.
Depois que um cliente invoca um procedimento remoto que tem um parâmetro de pipe, o cliente e o servidor inserem loops para transferir dados. Os dados podem ser produzidos no cliente ou no servidor. De qualquer forma, a quantidade de dados (em bytes) não precisa ser conhecida com antecedência. Os dados podem ser produzidos ou consumidos incrementalmente. Enquanto estiver no loop de transferência de dados, o servidor chama rotinas de stub que carregam ou descarregam um buffer de dados. O cliente chama procedimentos definidos pelo programador para alocar buffers, carregar dados e descarregar dados dos buffers.
Esta seção fornece uma visão geral do uso de pipes para chamadas de procedimento remoto. Ele apresenta a visão geral nos seguintes tópicos:
- de Terminologia de Pipe Essencial
- o estado do pipe
- definindo pipes em arquivos IDL
- de implementação de pipeClient-Side
- de implementação de pipeServer-Side
- regras de para vários pipes
- combinando parâmetros de pipe e não pipe
Para obter mais informações sobre sintaxe de pipe e restrições, consulte pipe na Referência de Linguagem MIDL. O programa de exemplo PIPES nos exemplos do SDK (Platform Software Development Kit)\rdiretório do computador demonstra como usar [in,out] pipes para transferir dados entre um cliente e um servidor.