После того как серверное приложение зарегистрирует свои интерфейсы, создаст необходимую информацию связывания и зарегистрирует свои конечные точки, оно может начать ожидать запросы от клиентских приложений.
Для того, чтобы получать запросы к удаленным процедурам, серверная программа должна использовать функцию RpcServerListen, как показано в следующем примере:
RPC_STATUS status;
status = RpcServerListen(
1,
RPC_C_LISTEN_MAX_CALLS_DEFAULT,
0);
Сервер RPC использует один или несколько потоков, которые принимают клиентские запросы и доставляют их к процедурам, зарегистрированных интерфейсов. Первый аргумент – это минимально число потоков, которые необходимо создать. Этот параметр является всего лишь рекомендацией, run-time RPC может проигнорировать его.
Второй аргумент – это максимальное число одновременно обслуживаемых запросов. Если вы хотите использовать максимальное значение по умолчанию, укажите RPC_C_LISTEN_MAX_CALLS_DEFAULT.
Согласно спецификации DCE, функция RpcServerListen должна выолняться до тех пока она не получит сигнал остановки. Одним из расширений стандарта Microsoft является возможность разрешения обслуживания запросов и продолжение выполнение основного потока приложения. Если вы хотите использовать стандартное поведение согласно DCE, то укажите в третьем аргументе ноль.