Функция 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 при успешном выполнении.
Комментарии
Параметры и эффекты функции 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 |