Aturan untuk Beberapa Pipa
Anda dapat menggabungkan [dalam], [keluar], dan [masuk, keluar] parameter pipa dalam kombinasi apa pun dalam satu panggilan, tetapi Anda harus memproses pipa dalam urutan tertentu, seperti yang ditunjukkan dalam contoh pseudocode berikut:
Nota
Fitur ini tidak lagi didukung di Windows Vista dan platform yang lebih baru.
- Dapatkan data dari setiap pipa input, dimulai dengan parameter pertama (paling kiri) [dalam] , dan melanjutkan secara berurutan, menguras setiap pipa sebelum mulai memproses yang berikutnya.
- Setelah setiap pipa input diproses sepenuhnya, kirim data untuk pipa output, sekali lagi dimulai dengan parameter [keluar] pertama, dan melanjutkan secara berurutan, mengisi setiap pipa sebelum mulai memproses yang berikutnya.
//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