Функция 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 не определено.
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
Комментарии
При необходимости серверное приложение может получать уведомления о том, что группа интерфейсов простаивает. Хотя любое приложение может воспользоваться этой функциональностью, оно предназначено для разработчиков служб, которые хотят, чтобы их служба была остановлена.
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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по