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

Функция RpcServerUseAllProtseqsEx сообщает библиотеке времени выполнения RPC использовать все поддерживаемые последовательности протоколов для получения удаленных вызовов процедур.

Синтаксис

RPC_STATUS RpcServerUseAllProtseqsEx(
  unsigned int MaxCalls,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

Параметры

MaxCalls

Длина очереди невыполненной работы для последовательности протоколов ncacn_ip_tcp. Все остальные последовательности протоколов игнорируют этот параметр. Используйте RPC_C_PROTSEQ_MAX_REQS_DEFAULT, чтобы указать значение по умолчанию. См. заметки.

SecurityDescriptor

Указатель на необязательный параметр, предоставленный для подсистемы безопасности. Используется только для последовательностей протоколов ncacn_np и ncalrpc . Все остальные последовательности протоколов игнорируют этот параметр. Не рекомендуется использовать дескриптор безопасности в конечной точке, чтобы обеспечить безопасность сервера. Этот параметр не отображается в спецификации DCE для этого API.

Policy

Указатель на структуру RPC_POLICY , которая позволяет переопределить политики по умолчанию для динамического выделения портов и привязки к сетевым картам (NIC) на компьютерах с несколькими адресами (компьютерах с несколькими сетевыми картами).

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

Значение Значение
RPC_S_OK
Вызов выполнен успешно.
RPC_S_NO_PROTSEQS
Не поддерживаются последовательности протоколов.
RPC_S_OUT_OF_MEMORY
Недостаточно памяти недоступен.
RPC_S_INVALID_SECURITY_DESC
Дескриптор безопасности недопустим.
 
Примечание Список допустимых кодов ошибок см. в разделе Возвращаемые значения RPC.
 

Комментарии

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

Если задать поле NICFlags структуры RPC_POLICY равным нулю, этот расширенный API функционально эквивалентен исходному RpcServerUseAllProtseqs, и сервер будет выполнять привязку к сетевым адаптерам на основе параметров в системном реестре. Сведения о том, как параметры реестра определяют доступные порты Интернета и интрасети, см. в статье Настройка реестра для выделения портов и выборочной привязки.

Примечание Параметры флагов в поле Политика действуют только в том случае, если используется последовательность протоколов ncacn_ip_tcp или ncadg_ip_udp . Для всех остальных последовательностей протоколов во время выполнения RPC эти значения игнорируются.
 
Серверное приложение вызывает RpcServerUseAllProtseqsEx для регистрации всех поддерживаемых последовательностей протоколов в библиотеке времени выполнения RPC. Для получения удаленных вызовов процедур сервер должен зарегистрировать хотя бы одну последовательность протоколов в библиотеке времени выполнения RPC.

Для каждой последовательности протокола, зарегистрированной сервером, библиотека времени выполнения RPC создает одну или несколько конечных точек, через которые сервер получает запросы на удаленные вызовы процедур. Библиотека времени выполнения RPC создает разные конечные точки для каждой последовательности протоколов. Имя конечной точки создается во время выполнения RPC или операционной системой. Например, для ncacn_ip_tcp номер порта динамически определяется по времени выполнения RPC в зависимости от параметров доступности и реестра.

Примечание Использование функции RpcServerUseAllProtseqsEx не приводит к тому, что сервер будет прослушивать следующие последовательности протоколов:
 
Примечание Чтобы прослушивать любую из этих последовательностей протоколов, каждую последовательность необходимо выбрать отдельно.
 
Для 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 .

Для выборочной регистрации последовательностей протокола сервер вызывает RpcServerUseProtseqEx, RpcServerUseProtseqIfEx или RpcServerUseProtseqEpEx. Описание процедур, которые сервер обычно вызывает после регистрации последовательностей протоколов, см. в разделе Привязка на стороне сервера.

Требования

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

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

Настройка реестра для выделения портов и выборочной привязки

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx