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


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

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

Синтаксис

RPC_STATUS RpcServerInterfaceGroupCreateA(
  [in]  RPC_INTERFACE_TEMPLATEA              *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATEA               *Endpoints,
  [in]  unsigned long                        NumEndpoints,
  [in]  unsigned long                        IdlePeriod,
  [in]  RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
  [in]  void                                 *IdleCallbackContext,
  [out] PRPC_INTERFACE_GROUP                 IfGroup
);

Параметры

[in] Interfaces

Указатель на массив RPC_INTERFACE_TEMPLATE структур, определяющих интерфейсы, предоставляемые группой интерфейсов.

[in] NumIfs

Количество элементов в интерфейсах.

[in] Endpoints

Указатель на массив RPC_ENDPOINT_TEMPLATE структур, определяющих конечные точки, используемые группой интерфейсов.

[in] NumEndpoints

Количество элементов в конечных точках.

[in] IdlePeriod

Время в секундах после того, как группа интерфейсов неактивна, среда выполнения RPC должна ждать перед вызовом обратного вызова бездействия. 0 означает, что обратный вызов вызывается немедленно. INFINITE означает, что серверное приложение не заботится о состоянии простоя группы интерфейсов.

[in] IdleCallbackFn

Обратный вызов RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN , который среда выполнения RPC будет вызывать после простоя группы интерфейсов в течение времени, заданного в IdlePeriod. Может иметь значение NULL , только если IdlePeriod имеет значение INFINITE.

[in] IdleCallbackContext

Определяемый пользователем указатель, передаваемый на неактивный обратный вызов в IdleCallbackFn.

[out] IfGroup

В случае успешного выполнения указатель на буфер RPC_INTERFACE_GROUP , который получает дескриптор созданной группы интерфейсов. Если эта функция завершается сбоем, значение IfGroup не определено.

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

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

Комментарии

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

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

Интерфейсы в группе интерфейсов можно вызывать только через конечные точки той же группы. Интерфейсы, не входящие в группу интерфейсов, нельзя вызывать через конечные точки, входящие в группу.

Активность сервера RPC не всегда видна для серверного приложения. В некоторых случаях простое наличие клиента с открытым подключением к серверу может привести к тому, что он будет активным, даже если в течение длительного периода времени не было отправлено никаких вызовов. Серверные приложения не должны полагаться на корреляцию между средой выполнения RPC, объявляющей, что группа находится в режиме простоя, и временем с момента отправки последнего вызова.

Примечание

Заголовок rpcdce.h определяет RpcServerInterfaceGroupCreate как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

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

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

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings