在伺服器上實作輸入管道
若要開始將資料傳送至伺服器,用戶端會呼叫其中一個伺服器的遠端程式。 此程式必須重複呼叫伺服器存根中的提取程式。 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