Compartir a través de


Reglas para varias canalizaciones

Puede combinar los parámetros de canalización [in], [out] y [in, out] en cualquier combinación de una sola llamada, pero debe procesar las canalizaciones en un orden específico, como se muestra en el siguiente ejemplo de pseudocódigo:

Nota

Esta característica ya no se admite en Windows Vista ni en plataformas posteriores.

 

  • Obtenga los datos de cada canalización de entrada, empezando por el primer parámetro (situado más a la izquierda) [in] y continuando en orden, purgando cada canalización antes de empezar a procesar la siguiente.
  • Después de procesar completamente cada canalización de entrada, envíe los datos de las canalizaciones de salida, empezando de nuevo por el primer parámetro [out] y continuando en orden, rellenando cada canalización antes de empezar a procesar la siguiente.
//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