Функция 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 не определено.
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
Комментарии
При необходимости серверное приложение может получать уведомления о том, что группа интерфейсов простаивает. Хотя любое приложение может воспользоваться этой функциональностью, оно предназначено для разработчиков служб, которые хотят, чтобы их служба была остановлена.
IdlePeriod не позволяет среде выполнения RPC создавать большое количество уведомлений при быстром изменении состояния простоя, а в случае с активированными службами помогает службе избежать излишнего запуска и остановки. При выборе этого значения разработчикам следует учитывать затраты на инициализацию и завершение работы службы, ожидаемую частоту, с которой будет происходить новое действие, а также затраты на сохранение службы в режиме бездействия. Низкий период простоя приведет к тому, что служба будет часто запускаться и останавливаться при выполнении новых действий клиента, в то время как высокий период простоя приведет к тому, что служба будет потреблять ресурсы без выполнения значимой работы.
Интерфейсы в группе интерфейсов можно вызывать только через конечные точки той же группы. Интерфейсы, не входящие в группу интерфейсов, нельзя вызывать через конечные точки, входящие в группу.
Активность сервера RPC не всегда видна для серверного приложения. В некоторых случаях клиент с открытым подключением к серверу может оставаться активным, даже если вызовы не были отправлены в течение длительного периода времени. Серверные приложения не должны полагаться на какую-либо корреляцию между средой выполнения RPC, объявляющей, что группа находится в режиме простоя, и временем с момента отправки последнего вызова.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | rpcdce.h (включая Rpc.h) |
Библиотека | Rpcrt4.lib |
DLL | Rpcrt4.dll |
См. также раздел
RpcServerInterfaceGroupActivate