Partilhar via


Client-Side Implementação de Tubos

O aplicativo cliente deve implementar os seguintes procedimentos, que o stub do cliente chamará durante a transferência de dados:

  • Um procedimento de tração (para um tubo de entrada)
  • Um procedimento push (para um tubo de saída)
  • Um procedimento de alocação para alocar um buffer para os dados de transferência

Todos esses procedimentos devem usar os argumentos especificados pelo arquivo de cabeçalho gerado por MIDL. Além disso, o aplicativo cliente deve ter uma variável de estado para identificar onde localizar ou colocar dados.

O procedimento de alocação também pode ser tão simples ou complexo quanto necessário. Por exemplo, ele pode retornar um ponteiro para o mesmo buffer toda vez que o stub chamar a função, ou pode alocar uma quantidade diferente de memória a cada vez. Se os dados já estiverem na forma adequada (uma matriz de elementos de pipe, por exemplo), você poderá coordenar o procedimento de alocação com o procedimento pull para alocar um buffer que já contenha os dados. Nesse caso, o seu procedimento de puxar pode ser uma rotina vazia.

A alocação do buffer deve ser em bytes. Os procedimentos push e pull, por outro lado, manipulam elementos, cujo tamanho em bytes depende de como foram definidos.

Esta seção discute a implementação do cliente de tubos de entrada e saída nas seguintes seções: