Bagikan melalui


Menghentikan Aplikasi Server

Aplikasi server dapat berhenti mendengarkan klien dengan memanggil RpcMgmtStopServerListening dan RpcServerUnregisterIf, atau hanya dengan keluar dari proses host. Kedua metode dapat diterima. Jika server mengikuti pendekatan pertama, server harus menerapkan langkah-langkah berikut:

Fungsi server RpcServerListen tidak kembali ke program panggilan sampai terjadi pengecualian atau hingga terjadi panggilan ke RpcMgmtStopServerListening . Secara default, hanya utas server lain yang diizinkan untuk menghentikan server RPC dengan menggunakan RpcMgmtStopServerListening. Klien yang mencoba menghentikan server akan menerima kesalahan RPC_S_ACCESS_DENIED. Namun, dimungkinkan untuk mengonfigurasi RPC untuk memungkinkan beberapa atau semua klien menghentikan server. Lihat RpcMgmtStopServerListening untuk detailnya.

Anda juga dapat meminta aplikasi klien melakukan panggilan prosedur jarak jauh ke rutinitas pematian di server. Rutinitas matikan memanggil RpcMgmtStopServerListening dan RpcServerUnregisterIf. Contoh tutorial aplikasi program ini menggunakan pendekatan ini dengan menambahkan fungsi jarak jauh baru, Shutdown, ke file Hellop.c.

Dalam fungsi Matikan , parameter null tunggal ke RpcMgmtStopServerListening menunjukkan bahwa aplikasi lokal harus berhenti mendengarkan panggilan prosedur jarak jauh. Dua parameter null ke RpcServerUnregisterIf adalah kartubebas, yang menunjukkan bahwa semua antarmuka harus tidak terdaftar. Parameter FALSE menunjukkan bahwa antarmuka harus segera dihapus dari registri, daripada menunggu panggilan tertunda selesai.

/* add this function to hellop.c */
void Shutdown(void)
{
    RPC_STATUS status;
 
    status = RpcMgmtStopServerListening(NULL);
 
    if (status) 
    {
       exit(status);
    }
 
    status = RpcServerUnregisterIf(NULL, NULL, FALSE);
 
    if (status) 
    {
       exit(status);
    }
} //end Shutdown