서버 애플리케이션 중지
서버 애플리케이션은 RpcMgmtStopServerListening 및 RpcServerUnregisterIf호출하거나 호스트 프로세스를 종료하여 클라이언트에 대한 수신 대기를 중지할 수 있습니다. 두 방법 모두 허용됩니다. 서버가 첫 번째 방법을 따르는 경우 다음 단계를 구현해야 합니다.
RpcServerListen서버 함수는 예외가 발생할 때까지 또는 RpcMgmtStopServerListening 호출될 때까지 호출 프로그램으로 반환되지 않습니다. 기본적으로 다른 서버 스레드만 RpcMgmtStopServerListening사용하여 RPC 서버를 중지할 수 있습니다. 서버를 중지하려는 클라이언트는 오류 RPC_S_ACCESS_DENIED 받습니다. 그러나 일부 또는 모든 클라이언트가 서버를 중지할 수 있도록 RPC를 구성할 수 있습니다. 자세한 내용은 RpcMgmtStopServerListening 참조하세요.
클라이언트 애플리케이션이 서버의 종료 루틴에 대한 원격 프로시저 호출을 하도록 할 수도 있습니다. 종료 루틴은 RpcMgmtStopServerListening 과 RpcServerUnregisterIf을 호출합니다. 이 자습서 예제 프로그램 애플리케이션은 Hellop.c 파일에 새 원격 함수 종료추가하여 이 방법을 사용합니다.
Shutdown 함수에서 RpcMgmtStopServerListening의 단일 null 매개 변수는 로컬 애플리케이션이 원격 프로시저 호출 수신을 중지해야 함을 나타냅니다. 두 null 매개 변수 은 RpcServerUnregisterIf에서 모든 인터페이스가 등록 해제됨을 나타내는 와일드카드입니다. FALSE 매개 변수는 보류 중인 호출이 완료될 때까지 기다리지 않고 인터페이스를 레지스트리에서 즉시 제거해야 임을 나타냅니다.
/* 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