У меня есть программа, которая запускает сервер RPC с определенным портом:
Однако сразу после вызова RPCServerUseProtSeqEp порт назначается процессу, и последующие вызовы этой функции возвращают Duplicate Endpoint.
Как я могу отменить регистрацию \ закрыть этот порт? Мне нужно использовать этот сервер RPC в нескольких процессах.
Вы перепутали заказ:
увидеть msdn, RPCServer Application
Я надеюсь, что этот ответ не слишком поздно
добавить 22.08.2016
Чтобы закрыть конечную точку сервера, используйте
RpcServerUnregisterIf ()
увидеть msdn, остановка приложения RPCServer
еще раз: вы перепутали порядок вызовов API: сначала вызовите RpcServerUseProtseqEp (), чтобы указать протокол, затем RpcServerRegisterIf (), чтобы зарегистрировать сервер, а затем RpcServerListen ().
RpcServerListen () блокирует поток, из которого он вызывается. Если вы вызываете его из консольной программы, используйте ctrl c, чтобы завершить вызов. Затем будет выполнена следующая строка кода, которая обычно будет RpcServerUnregisterIf (). Если вы вызвали RpcServerListen () из отдельного потока, например, в службе, завершите работу сервера с помощью RpcMgmtStopServerListening () в главном потоке.
Других решений пока нет …