Regeln für mehrere Pipes
Sie können die Pipeparameter [in], [out] und [in, out] in einer beliebigen Kombination in einem einzelnen Aufruf kombinieren, aber Sie müssen die Pipes in einer bestimmten Reihenfolge verarbeiten, wie im folgenden Pseudocodebeispiel gezeigt:
Hinweis
Dieses Feature wird in Windows Vista und späteren Plattformen nicht mehr unterstützt.
- Rufen Sie die Daten aus jeder Eingabepipe ab, beginnend mit dem ersten (ganz links) [in]-Parameter, und fahren Sie in der Reihenfolge fort, indem Sie jede Pipe entladen, bevor Sie mit der Verarbeitung der nächsten beginnen.
- Nachdem jede Eingabepipe vollständig verarbeitet wurde, senden Sie die Daten für die Ausgabepipes, wieder beginnend mit dem ersten [out]-Parameter, und fahren Sie in der Reihenfolge fort, und füllen Sie jede Pipe aus, bevor Sie mit der Verarbeitung der nächsten 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