Функция 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 только в том случае, если IdlePeriodINFINITE.
[in] IdleCallbackContext
Определяемый пользователем указатель, передаваемый обратному вызову в IdleCallbackFn.
[out] IfGroup
В случае успешного выполнения указатель на буфер RPC_INTERFACE_GROUP, который получает дескриптор в только что созданную группу интерфейсов. Если эта функция завершается ошибкой, IfGroup не определена.
Возвращаемое значение
Ценность | Значение |
---|---|
|
Вызов выполнен успешно. |
Замечания
При необходимости серверное приложение может быть уведомлено, когда группа интерфейсов становится бездействуемой. Несмотря на то, что любое приложение может воспользоваться этой функцией, оно предназначено для разработчиков служб, которые хотели бы включить их службу для остановки простоя.
IdlePeriod не позволяет среде выполнения RPC создавать большое количество уведомлений, если состояние простоя быстро меняется, а в случае триггерных служб помогает службе избежать необходимости запуска и остановки. Разработчики должны учитывать затраты на инициализацию и завершение работы службы, ожидаемую частоту, с которой будет происходить новое действие, и затраты на сохранение бездействия службы при выборе этого значения. Низкий период простоя приведет к частому запуску и остановке службы по мере возникновения новых действий клиента, в то время как высокий период простоя приведет к тому, что служба будет использовать ресурсы без выполнения значимых работ.
Интерфейсы в группе интерфейсов можно вызывать только через конечные точки одной группы. Интерфейсы, которые не являются частью группы интерфейсов, нельзя вызывать через конечные точки, которые являются частью группы.
Действие сервера RPC не всегда отображается для серверного приложения. В некоторых случаях просто наличие клиента с открытым подключением к серверу может оставаться активным, даже если вызовы не были отправлены в течение длительного периода времени. Серверные приложения не должны полагаться на какую-либо корреляцию между средой выполнения RPC, объявляющей, что группа неактивна и время после последнего вызова.
Заметка
Заголовок rpcdce.h определяет RpcServerInterfaceGroupCreate как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 8 [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2012 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | rpcdce.h (include Rpc.h) |
библиотеки |
Rpcrt4.lib |
DLL | Rpcrt4.dll |
См. также
RpcServerInterfaceGroupActivate