Функция RpcServerUseProtseqEpEx (rpcdce.h)
Функция RpcServerUseProtseqEpEx сообщает библиотеке времени выполнения RPC использовать указанную последовательность протоколов в сочетании с указанной конечной точкой для получения удаленных вызовов процедур.
Синтаксис
RPC_STATUS RpcServerUseProtseqEpEx(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_WSTR Endpoint,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Параметры
Protseq
Указатель на строковый идентификатор последовательности протоколов для регистрации в библиотеке времени выполнения RPC.
MaxCalls
Длина очереди невыполненной работы для последовательности протоколов ncacn_ip_tcp. Все остальные последовательности протоколов игнорируют этот параметр. Используйте RPC_C_PROTSEQ_MAX_REQS_DEFAULT, чтобы указать значение по умолчанию. См. заметки.
Endpoint
Указатель на сведения об адресе конечной точки, используемые при создании привязки для последовательности протокола, указанной Protseq.
SecurityDescriptor
Указатель на необязательный параметр, предоставленный для подсистемы безопасности. Используется только для последовательностей протоколов ncacn_np и ncalrpc . Все остальные последовательности протоколов игнорируют этот параметр. Не рекомендуется использовать дескриптор безопасности в конечной точке, чтобы обеспечить безопасность сервера. Этот параметр не отображается в спецификации DCE для этого API.
Policy
Указатель на структуру RPC_POLICY , которая содержит флаги, которые задают атрибуты, относящиеся к транспорту. В случае ncadg_mq транспорта эти флаги указывают свойства очереди обработки и получения сервера. В случае ncacn_ip_tcp или ncadg_ip_udp транспорта эти флаги ограничивают выделение портов для динамических портов и позволяют многосетевым компьютерам выборочно привязывать к сетевым картам.
Параметры флага в поле Политика действуют только в том случае, если используются последовательности протоколов ncacn_ip_tcp, ncadg_ip_udp или ncadg_mq . Для всех остальных последовательностей протоколов время выполнения RPC игнорирует эти значения.
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Последовательность протоколов не поддерживается на этом узле. |
|
Последовательность протоколов недопустима. |
|
Недопустимый формат конечной точки. |
|
В системе не хватает памяти. |
|
Конечная точка является дубликатом. |
|
Дескриптор безопасности недопустим. |
Комментарии
Параметры и эффекты RpcServerUseProtseqEpEx подразделяют параметры RpcServerUseProtseqEp. Разница заключается в параметре Policy , который позволяет задавать определенные политики в конечных точках. Если задать поле NICFlags структуры RPC_POLICY равным нулю, эта расширенная функция эквивалентна исходной функции RpcServerUseProtseqEp при использовании с транспортом ncacn_ip_tcp или ncadg_ip_udp .
Серверное приложение вызывает RpcServerUseProtseqEpEx для регистрации одной последовательности протокола в библиотеке времени выполнения RPC. При каждой регистрации последовательности протокола RpcServerUseProtseqEpEx включает указанные сведения об адресе конечной точки.
Чтобы получать запросы на удаленные вызовы процедур, сервер должен зарегистрировать по крайней мере одну последовательность протоколов в библиотеке времени выполнения RPC. Серверное приложение может много раз вызывать эту подпрограмму для регистрации дополнительных последовательностей протоколов и конечных точек. Для каждой последовательности протокола, зарегистрированной сервером, библиотека времени выполнения RPC создает одну или несколько конечных точек, через которые сервер получает запросы на удаленные вызовы процедур. Библиотека времени выполнения RPC создает разные конечные точки для каждой последовательности протоколов. Однако каждый интерфейс в процессе доступен через любую конечную точку. Дополнительные сведения см. в статье Создание защищенного клиента или сервера RPC.
Для MaxCalls значение, предоставленное приложением, является лишь указанием. Время выполнения RPC или поставщик сокетов Windows может переопределить значение. Например, в Windows XP или Windows 2000 Профессиональная значение ограничено 5. Значения больше 5 игнорируются, а вместо них используется 5. В Windows Server 2003 и Windows 2000 Server это значение будет учитываться.
Приложения должны быть осторожны, чтобы передать разумные значения в MaxCalls. Большие значения на сервере, расширенном сервере или сервере datacenter могут привести к использованию большого объема памяти нестраничного пула. Использование слишком малого значения также является неблагоприятным, так как это может привести к тому, что пакеты TCP SYN будут удовлетворены TCP RST с сервера, если очередь невыполненной работы будет исчерпана. При определении правильного значения MaxCalls разработчик приложения должен сбалансировать объем памяти и требования к масштабируемости.
Если компьютер настроен для использования выборочной привязки, успешное возвращение не гарантирует, что сервер создал конечные точки для всех сетевых интерфейсов, присутствующих на компьютере. Время выполнения RPC может не прослушивать некоторые сетевые интерфейсы в зависимости от параметров выборочной привязки. Кроме того, если интерфейс еще не получил IP-адрес с помощью DHCP, сервер RPC не будет прослушивать сетевой интерфейс, пока ему не будет назначен DHCP-адрес. Успешное возвращение означает, что сервер прослушивает по крайней мере один сетевой интерфейс; Полный список дескрипторов привязки, по которым можно получить удаленные вызовы процедур, можно получить с помощью вызова функции RpcServerInqBindings.
Дополнительные сведения см. в разделах Привязка на стороне сервера, Привязка строк, Настройка реестра для выделения портов и выборочной привязки и Очередь сообщений RPC , а также сообщение и ncadg_mq справочных страниц MIDL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | rpcdce.h (включая Rpc.h) |
Библиотека | Rpcrt4.lib |
DLL | Rpcrt4.dll |
См. также раздел
Написание защищенного клиента или сервера RPC