Sdílet prostřednictvím


Pravidla pro více kanálů

Můžete kombinovat [v], [ven], a [in, out] parametry potrubí v libovolné kombinaci v jednom volání, ale musíte zpracovat kanály v určitém pořadí, jak je znázorněno v následujícím příkladu pseudokódu:

Poznámka

Tato funkce již není podporována v systémech Windows Vista a novějších platformách.

 

  • Získejte data z každého vstupního kanálu, počínaje prvním (úplně vlevo) [v parametru] a pokračujte v pořadí, vyprázdnění každého potrubí před zahájením zpracování dalšího kanálu.
  • Po úplném zpracování každého vstupního potrubí odešlete data pro výstupní kanály znovu počínaje prvním parametrem [] a pokračujte v pořadí, vyplňte každý kanál před zahájením zpracování další.
//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