Bagikan melalui


Aturan untuk Beberapa Pipa

Anda dapat menggabungkan parameter alur [in], [out], dan [in, out] dalam kombinasi apa pun dalam satu panggilan, tetapi Anda harus memproses pipa dalam urutan tertentu, seperti yang ditunjukkan dalam contoh pseudocode berikut:

Catatan

Fitur ini tidak lagi didukung di Windows Vista dan platform yang lebih baru.

 

  • Dapatkan data dari setiap pipa input, dimulai dengan parameter [in] pertama (paling kiri), dan terus 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 [out] 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