Поделиться через


Функция RpcServerRegisterIf3 (rpcdce.h)

Функция RpcServerRegisterIf3 регистрирует интерфейс в библиотеке времени выполнения RPC.

Синтаксис

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

Параметры

[in] IfSpec

Структура, созданная ПО MIDL, указывающая интерфейс для регистрации.

[in, optional] MgrTypeUuid

Указатель на тип UUID для связи с параметром MgrEpv . Если указать значение параметра NULL (или nil UUID), ifSpec регистрируется с UUID типа nil.

[in, optional] MgrEpv

Вектор точки входа (EPV) подпрограмм диспетчера. Чтобы использовать EPV по умолчанию, сгенерированный MIDL, укажите значение NULL . Дополнительные сведения см. в разделе RPC_MGR_EPV.

[in] Flags

Флаги. Список значений флагов см. в разделе Флаги регистрации интерфейса.

[in] MaxCalls

Максимальное количество одновременных запросов на вызовы удаленных процедур, которые сервер может принимать в интерфейсе автоматического прослушивания . Параметр MaxCalls применим только к интерфейсу автоматического прослушивания и игнорируется в интерфейсах, которые не поддерживают автоматическое прослушивание. Библиотека времени выполнения RPC делает все возможное, чтобы сервер не разрешал больше одновременных вызовов, чем количество вызовов, указанное в MaxCalls. Фактическое число может быть больше и может отличаться для каждой последовательности протокола.

Вызовы в других интерфейсах управляются значением параметра MaxCalls для всего процесса, указанного в вызове функции RpcServerListen .

Если количество одновременных вызовов не является проблемой, можно немного повысить производительность на стороне сервера, указав значение по умолчанию с помощью RPC_C_LISTEN_MAX_CALLS_DEFAULT. Это освобождает среду выполнения RPC от применения ненужных ограничений.

[in] MaxRpcSize

Максимальный размер блоков входящих данных в байтах. Этот параметр можно использовать для предотвращения вредоносных атак типа "отказ в обслуживании". Если блок данных удаленного вызова процедуры больше MaxRpcSize, библиотека времени выполнения RPC отклоняет вызов и отправляет клиенту ошибку RPC_S_ACCESS_DENIED. При указании значения (unsigned int) –1 для этого параметра удаляется ограничение на размер входящих блоков данных. Этот параметр не влияет на вызовы, выполненные по протоколу ncalrpc .

[in, optional] IfCallback

Функция обратного вызова безопасности или ЗНАЧЕНИЕ NULL для отсутствия обратного вызова. Каждый зарегистрированный интерфейс может иметь другую функцию обратного вызова. См. примечания в RpcServerRegisterIf2.

[in, optional] SecurityDescriptor

Дескриптор безопасности для доступа к интерфейсу RPC. Каждый зарегистрированный интерфейс может иметь свой дескриптор безопасности.

Возвращаемое значение

Возвращает RPC_S_OK при успешном выполнении.

Примечание Список допустимых кодов ошибок см. в разделе Возвращаемые значения RPC.
 

Комментарии

Параметры и эффекты функции RpcServerRegisterIf3 расширяют параметры функции RpcServerRegisterIf2 . Разница заключается в возможности указать дескриптор безопасности для управления доступом к зарегистрированным интерфейсу RPC.

Если указаны SecurityDescriptor и IfCallbackFn, дескриптор безопасности в SecurityDescriptor сначала проверяется, а обратный вызов в IfCallbackFn будет вызван после проверка доступа к дескриптору безопасности.

При вызове RpcServerRegisterIf3 с параметром SecurityDescriptor , имеющим значение NULL, или вызове RpcServerRegisterIf, RpcServerRegisterIf2 или RpcServerRegisterIfEx для регистрации интерфейса будет использоваться дескриптор безопасности по умолчанию. Дескриптор безопасности по умолчанию не разрешает доступ из любого процесса AppContainer к интерфейсу, если сервер RPC не является процессом AppContainer. Дескриптор безопасности по умолчанию не разрешает доступ из любого процесса в других процессах AppContainer к интерфейсу, если сервер RPC является процессом AppContainer. Дескриптор безопасности по умолчанию разрешает доступ из обычных процессов, включая процессы с низкой целостностью.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header rpcdce.h (включая Rpc.h)
Библиотека Rpcrt4.lib
DLL Rpcrt4.dll

См. также раздел

Регистрация интерфейсов

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx