여러 파이프에 대한 규칙
단일 호출에서 [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