共用方式為


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 回呼,一旦介面群組閑置,IdlePeriod中指定的時間長度,RPC 運行時間就會叫用。 只有在 IdlePeriodINFINITE時,才能 NULL

[in] IdleCallbackContext

要傳遞至idleCallbackFn 中閒置回呼的使用者定義指標。

[out] IfGroup

如果成功,則為接收新建立介面群組句柄之 RPC_INTERFACE_GROUP 緩衝區的指標。 如果此函式失敗,IfGroup 未定義。

傳回值

價值 意義
RPC_S_OK
呼叫成功。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

言論

當介面群組閑置時,可以選擇性地通知伺服器應用程式。 雖然任何應用程式都可以利用這項功能,但目標是想要讓服務閑置停止的服務開發人員。

IdlePeriod 可防止 RPC 運行時間在閑置狀態快速變更時產生大量通知,並在觸發的服務情況下,協助服務避免不需要啟動和停止。 開發人員應考慮服務初始化和關機的成本、新活動發生的預期頻率,以及選取此值時讓服務保持閑置的成本。 低閑置期間會導致服務在新的用戶端活動發生時頻繁啟動和停止,而高閑置期間會導致服務在不執行有意義的工作的情況下耗用資源。

介面群組中的介面只能透過相同群組的端點呼叫。 不能透過屬於群組一部分的端點呼叫不屬於介面群組的介面。

伺服器應用程式不一定會看到 RPC 伺服器活動。 在某些情況下,只要有用戶端與伺服器的開啟連線,即使長時間未分派任何呼叫,仍可能會保持作用中狀態。 伺服器應用程式不得依賴 RPC 運行時間之間任何相互關聯,宣告群組處於閑置狀態,以及上次分派呼叫之後的時間。

注意

rpcdce.h 標頭會根據 UNICODE 預處理器常數的定義,將 RpcServerInterfaceGroupCreate 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 rpcdce.h (包括 Rpc.h)
連結庫 Rpcrt4.lib
DLL Rpcrt4.dll

另請參閱

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings