Condividi tramite


Regole per più pipe

È possibile combinare i parametri pipe [in], [out]e [in, out] 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 parametro (all'estrema sinistra) [in] e continuare in ordine, svuotando ogni pipe prima di iniziare a elaborare il successivo.
  • Dopo che ogni pipe di input è stata completamente elaborata, inviare i dati per le pipe di output, a partire dal 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