Règles pour plusieurs canaux
Vous pouvez combiner [dans], [out], et [in, out] canal dans n’importe quelle combinaison dans un seul appel, mais vous devez traiter les canaux dans un ordre spécifique, comme illustré dans l’exemple de pseudocode suivant :
Note
Cette fonctionnalité n’est plus prise en charge dans Windows Vista et les plateformes ultérieures.
- Obtenez les données de chaque canal d’entrée, en commençant par le premier (le plus à gauche) [dans] paramètre, puis continuez dans l’ordre, en drainant chaque canal avant de commencer à traiter la suivante.
- Une fois que chaque canal d’entrée a été complètement traité, envoyez les données des canaux de sortie, à nouveau en commençant par le premier [paramètre] et en continuant dans l’ordre, en remplissant chaque canal avant de commencer à traiter la suivante.
//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