Aracılığıyla paylaş


Birden Çok Kanallar için Kurallar

[], [out] ve [in, out] kanal parametrelerini tek bir çağrıda herhangi bir birleşimde birleştirebilirsiniz, ancak aşağıdaki sahte kod örneğinde gösterildiği gibi kanalları belirli bir sırada işlemeniz gerekir:

Not

Bu özellik artık Windows Vista ve sonraki platformlarda desteklenmiyor.

 

  • İlk (en soldaki) [] parametresinden başlayarak ve sırayla devam ederek sonrakini işlemeye başlamadan önce her kanalı boşaltarak her giriş kanalından verileri alın.
  • Her giriş kanalı tamamen işlendikten sonra, ilk [] parametresinden başlayarak çıkış kanalları için verileri gönderin ve sırasıyla devam ederek sonraki işlemi işlemeye başlamadan önce her kanalı doldurun.
//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