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