Partilhar via


Regras para vários tubos

Você pode combinar os parâmetros de pipe [em], [out] e [in, out] em qualquer combinação em uma única chamada, mas você deve processar os pipes em uma ordem específica, conforme mostrado no exemplo de pseudocódigo a seguir:

Observação

Esse recurso não é mais suportado no Windows Vista e em plataformas posteriores.

 

  • Obtenha os dados de cada tubo de entrada, começando com o primeiro parâmetro (mais à esquerda) [em] e continuando em ordem, drenando cada tubo antes de começar a processar o próximo.
  • Depois de cada tubo de entrada ter sido completamente processado, envie os dados para os tubos de saída, começando novamente com o primeiro parâmetro [out] e continuando em ordem, enchendo cada tubo antes de começar a processar o próximo.
//in .IDL file:
void InOutUCharPipe( [in,out] UCHAR_PIPE *uchar_pipe_1, 
                     [out] UCHAR_PIPE * uchar_pipe_2, 
                     [in] UCHAR_PIPE uchar_pipe_3);
 
//remote procedure:
void InOutUCharPipe( UCHAR_PIPE *param1,
                     UCHAR_PIPE *param2,
                     UCHAR_PIPE  param3)
{
    while(!END_OF_PIPE1)
    {
        param1->pull (. . .);
        . . .
    };

    while(!END_OF_PIPE3)
    {
        param3.pull (. . .);
        . . .
    };

    while(!END_OF_PIPE1)
    {
        param1->push (. . .);
        . . .
    };

    while(!END_OF_PIPE2)
    {
        param2->push(. . .);
        . . .
    };
} //end InOutUCharPipe