Condividi tramite


Regole per più pipe

È possibile combinare [in], [out], e [in, out] parametri pipe in qualsiasi combinazione in una singola chiamata, ma è necessario elaborare le pipe in un ordine specifico, come illustrato nell'esempio pseudocodice seguente:

Nota

Questa funzionalità non è più supportata in Windows Vista e nelle piattaforme successive.

 

  • Ottenere i dati da ogni pipe di input, a partire dal primo (all'estrema sinistra) [nel parametro] e continuando in ordine, svuotando ogni tubo prima di iniziare a elaborare il successivo.
  • Dopo che ogni pipe di input è stata elaborata completamente, inviare i dati per le pipe di output, iniziando di nuovo con il primo parametro [out] e continuando in ordine, riempiendo ogni pipe prima di iniziare a elaborare il successivo.
//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