Menerapkan Pipa Output di Server
Untuk mulai menerima data dari server, klien memanggil salah satu prosedur jarak jauh server. Prosedur ini harus berulang kali memanggil prosedur pendorongan di stub server. Pengkompilasi MIDL menggunakan file IDL aplikasi untuk menghasilkan prosedur pendorongan server secara otomatis.
Rutinitas server jarak jauh harus mengisi buffer pipa output dengan data sebelum memanggil prosedur pendorongan. Setiap kali program server memanggil prosedur pendorongan dalam stub-nya, prosedur pendorongan mencekam data dan mengirimkannya ke klien. Perulangan berlanjut sampai server mengirim buffer dengan panjang nol.
Contoh berikut berasal dari program Pipedemo yang terkandung dalam sampel yang disertakan dengan Windows SDK. Ini menggambarkan prosedur server jarak jauh yang menggunakan pipa untuk mendorong data dari server ke klien.
void OutPipe(LONG_PIPE *outputPipe )
{
long *outputPipeData;
ulong index = 0;
ulong elementsToSend = PIPE_TRANSFER_SIZE;
/* Allocate memory for the data to be passed back in the pipe */
outputPipeData = (long *)malloc( sizeof(long) * PIPE_SIZE );
while(elementsToSend >0) /* Loop to send pipe data elements */
{
if (index >= PIPE_SIZE)
elementsToSend = 0;
else
{
if ( (index + PIPE_TRANSFER_SIZE) > PIPE_SIZE )
elementsToSend = PIPE_SIZE - index;
else
elementsToSend = PIPE_TRANSFER_SIZE;
}
outputPipe->push( outputPipe->state,
&(outputPipeData[index]),
elementsToSend );
index += elementsToSend;
} //end while
free((void *)outputPipeData);
}
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk