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


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

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

Синтаксис

RPC_STATUS RpcServerInterfaceGroupCreate(
  [in]  RPC_INTERFACE_TEMPLATE               *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATE                *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, объявляющей, что группа находится в режиме простоя, и временем с момента отправки последнего вызова.

Требования

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

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

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings