Implementação do pipe Client-Side
O aplicativo cliente deve implementar os seguintes procedimentos, que o stub do cliente chamará durante a transferência de dados:
- Um procedimento de pull (para um pipe de entrada)
- Um procedimento push (para um pipe de saída)
- Um procedimento alloc 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 alloc também pode ser tão simples ou tão complexo quanto necessário. Por exemplo, ele pode retornar um ponteiro para o mesmo buffer sempre que o stub chama 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 alloc com o procedimento de pull para alocar um buffer que já contém os dados. Nesse caso, seu procedimento de pull pode ser uma rotina vazia.
A alocação de buffer deve estar em bytes. Os procedimentos de push e pull, por outro lado, manipulam elementos cujo tamanho em bytes depende de como eles foram definidos.
Esta seção discute a implementação do cliente de pipes de entrada e saída nas seguintes seções: