Freigeben über


Regeln für mehrere Rohre

Sie können [in], [out], und [in, out] Pipe-Parameter in einer beliebigen Kombination in einem einzelnen Aufruf kombinieren, aber Sie müssen die Rohre in einer bestimmten Reihenfolge verarbeiten, wie im folgenden Pseudocodebeispiel gezeigt:

Anmerkung

Dieses Feature wird in Windows Vista und späteren Plattformen nicht mehr unterstützt.

 

  • Rufen Sie die Daten aus jeder Eingabepipeline ab, beginnend mit dem ersten [in] Parameter und wird in der Reihenfolge fortgesetzt, wobei die einzelnen Rohre abgelassen werden, bevor Sie mit der nächsten Verarbeitung beginnen.
  • Nachdem jede Eingabepipeline vollständig verarbeitet wurde, senden Sie die Daten für die Ausgaberohre erneut, beginnend mit dem ersten [] Parameter, und setzen Sie die Einzelnen Rohre in der Reihenfolge fort, bevor Sie mit der nächsten Verarbeitung beginnen.
//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