共用方式為


多個管道的規則

您可以在單一呼叫中結合 [in]、[out] 和 [in, out] 管道參數,但您必須以特定順序處理管道,如下列虛擬程式碼範例所示:

注意

Windows Vista 和更新版本平臺不再支援此功能。

 

  • 從每個輸入管道取得資料,從最) 左邊的第一個 ([in] 參數開始,然後依序繼續清空每個管道,再開始處理下一個管道。
  • 在完全處理每個輸入管道之後,請傳送輸出管道的資料,再從第一個 [out] 參數開始,然後依序繼續填滿每個管道,然後再開始處理下一個管道。
//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