다음을 통해 공유


처리되지 않은 컨텍스트 핸들을 사용하여 서버 언로드

일반적으로 호스팅 프로세스를 먼저 중지하지 않고 컨텍스트 핸들을 사용하여 RPC가 호출하는 DLL을 언로드하는 것은 문제가 되었습니다. 이는 DLL이 언로드될 때 런다운 루틴이 더 이상 유효하지 않으므로 입니다. 이전에 열린 컨텍스트 핸들이 있는 클라이언트가 실패하고 RPC 런타임이 컨텍스트 핸들을 닫으려고 하면 런다운 루틴 액세스를 호출하려는 시도가 위반되고 서버가 충돌합니다.

Windows XP부터 RpcServerUnregisterIfEx 라는 새 API가 추가되었습니다. RpcServerUnregisterIfEx 는 등록되지 않은 인터페이스에서 연 컨텍스트 핸들을 닫습니다. RpcServerUnregisterIf 함수는 그렇지 않습니다. 전체 프로세스가 종료될 때 는 RpcServerUnregisterIfEx 를 사용할 필요가 없지만, 실행 중인 컨텍스트 핸들이 있는 동안 런다운 루틴을 호스트하는 하나 이상의 DLL이 언로드되는 경우 필요합니다.