共用方式為


在伺服器上實作輸入管道

若要開始將資料傳送至伺服器,用戶端會呼叫其中一個伺服器的遠端程式。 此程式必須重複呼叫伺服器存根中的提取程式。 MIDL 編譯器會使用應用程式的 IDL 檔案來自動產生伺服器的提取程式。

每次伺服器程式在其存根中叫用提取程式時,提取程式都會接收來自用戶端的資料區塊。 它會將資料解除封存到伺服器的緩衝區。 然後,伺服器的遠端程式就可以以任何必要方式處理此資料。 迴圈會繼續執行,直到伺服器收到長度為零的緩衝區為止。

下列範例來自隨附于 Platform Software Development Kit (SDK) 範例中的 Pipedemo 程式。 它說明使用管道將資料從用戶端提取到伺服器的遠端伺服器程式。

//file: server.c (fragment)
#include uc_server.c
#define PIPE_TRANSFER_SIZE 100 /* Transfer 100 pipe elements at one time */
 
void InPipe(LONG_PIPE     long_pipe )
{
    long local_pipe_buf[PIPE_TRANSFER_SIZE];
    ulong actual_transfer_count = PIPE_TRANSFER_SIZE;
 
    while(actual_transfer_count > 0) /* Loop to get all 
                                        the pipe data elements */
    {
        long_pipe.pull( long_pipe.state,
                        local_pipe_buf,
                        PIPE_TRANSFER_SIZE,
                        &actual_transfer_count);
        /* process the elements */
    } // end while
} //end InPipe