多個管道的規則
您可以在單一呼叫中結合 [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