Регистрации поддерживаемых интерфейсов обеспечивает диспетчеризацию запросов от клиентов к соответствующим процедурам сервера. Для регистрации интерфейсов можно использовать функцию RpcServerRegisterIf. Следующий фрагмент кода иллюстрирует ее использование:
RPC_STATUS status;
status = RpcServerRegisterIf(MyInterface_v1_0_s_ifspec, NULL, NULL);
Первый аргумент функции RpcServerRegisterIf – это структура, которую генерирует компилятор MIDL на основе IDL файла и которая определяет интерфейс к серверу. Второй и третий аргументы – это UUID и вектор точек входа, соответственно. В нашем примере – они установлены в значение NULL. В большинстве случаев ваша программа-сервер будет устанавливать эти значения в NULL. Второй и третий параметры используются при множественной реализации один и тех же процедур интерфейса.
Серверная программа может также использовать функцию RpcServerRegisterIfEx для регистрации интерфейса. Преимуществом этой функции является возможность указания функции обратного вызова (call-back) для обеспечения авторизации. Использование функций обратного вызова для реализации защищенного приложения – является рекомендуемой практикой.