Birden Çok Kanallar için Kurallar
[], [out] ve [in, out] kanal parametrelerini tek bir çağrıda herhangi bir birleşimde birleştirebilirsiniz, ancak aşağıdaki sahte kod örneğinde gösterildiği gibi kanalları belirli bir sırada işlemeniz gerekir:
Not
Bu özellik artık Windows Vista ve sonraki platformlarda desteklenmiyor.
- İlk (en soldaki) [] parametresinden başlayarak ve sırayla devam ederek sonrakini işlemeye başlamadan önce her kanalı boşaltarak her giriş kanalından verileri alın.
- Her giriş kanalı tamamen işlendikten sonra, ilk [] parametresinden başlayarak çıkış kanalları için verileri gönderin ve sırasıyla devam ederek sonraki işlemi işlemeye başlamadan önce her kanalı doldurun.
//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