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