여러 파이프에 대한 규칙

단일 호출에서 [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