Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Stopping the Server Application

A server application can stop listening for clients by calling RpcMgmtStopServerListening and RpcServerUnregisterIf, or by simply exiting the host process. Both methods are acceptable. If the server follows the first approach, it should implement the following steps:

The server function RpcServerListen does not return to the calling program until an exception occurs or until a call to RpcMgmtStopServerListening occurs. By default, only another server thread is allowed to halt the RPC server by using RpcMgmtStopServerListening. Clients who try to halt the server will receive the error RPC_S_ACCESS_DENIED. However, it is possible to configure RPC to allow some or all clients to stop the server. See RpcMgmtStopServerListening for details.

You can also have the client application make a remote procedure call to a shutdown routine on the server. The shutdown routine calls RpcMgmtStopServerListening and RpcServerUnregisterIf. This tutorial example program application uses this approach by adding a new remote function, Shutdown, to the file Hellop.c.

In the Shutdown function, the single null parameter to RpcMgmtStopServerListening indicates that the local application should stop listening for remote procedure calls. The two null parameters to RpcServerUnregisterIf are wildcards, indicating that all interfaces should be unregistered. The FALSE parameter indicates that the interface should be removed from the registry immediately, rather than waiting for pending calls to complete.

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



Community Additions

© 2015 Microsoft