Partager via


Règles pour plusieurs canaux

Vous pouvez combiner les paramètres de canal [in], [out] et [in, out] 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 :

Notes

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 paramètre (le plus à gauche) [in] et en continuant dans l’ordre, en drainant chaque canal avant de commencer à traiter le suivant.
  • Une fois que chaque canal d’entrée a été entièrement traité, envoyez les données pour les canaux de sortie, en commençant à nouveau par le premier paramètre [out] et en continuant dans l’ordre, en remplissant chaque canal avant de commencer à traiter le suivant.
//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