Udostępnij za pośrednictwem


Reguły dla wielu potoków

Można połączyć [w], [się], i [w] parametry potoku w dowolnej kombinacji w jednym wywołaniu, ale należy przetworzyć potoki w określonej kolejności, jak pokazano w poniższym przykładzie pseudokodu:

Nuta

Ta funkcja nie jest już obsługiwana na platformach Windows Vista i nowszych.

 

  • Pobierz dane z każdego potoku wejściowego, zaczynając od pierwszego (najdalej po lewej) [w] parametru i kontynuuj, opróżniając każdy potok przed rozpoczęciem przetwarzania następnego.
  • Po całkowitym przetworzeniu każdego potoku wejściowego wyślij dane dla potoków wyjściowych, ponownie zaczynając od pierwszego [się] parametru i kontynuuj w kolejności, wypełniając każdy potok przed rozpoczęciem przetwarzania następnego.
//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