共用方式為


rpcEpRegisterNoReplace 函式 (rpcdce.h)

RpcEpRegisterNoReplace 函式會將伺服器位址資訊新增至本機端點對應資料庫。

語法

RPC_STATUS RpcEpRegisterNoReplace(
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVector,
  UUID_VECTOR        *UuidVector,
  RPC_CSTR           Annotation
);

參數

IfSpec

向本機端點對應資料庫註冊的介面。

BindingVector

系結句柄向量的指標,伺服器可透過此向量接收遠端過程調用。

UuidVector

伺服器所提供之物件 UUID 向量的指標。 伺服器應用程式會建構此向量。

Null 參數值表示沒有要註冊的物件 UUID。

Annotation

套用至每個新增至本機端點對應資料庫的跨產品專案之字元字串批註的指標。 字串長度最多可達 64 個字元,包括 Null 終止字元。 如果沒有批注字串,請指定 null 值或以 null 結尾的字串 (“\0”) 。

註釋字串僅供應用程式用於資訊。 RPC 不會使用此字串來判斷客戶端與哪個伺服器實例通訊,或是列舉端點對應資料庫中的元素。

傳回值

意義
RPC_S_OK
呼叫成功。
RPC_S_NO_BINDINGS
沒有系結。
RPC_S_INVALID_BINDING
系結句柄無效。
RPC_S_WRONG_KIND_OF_BINDING
這是作業的系結錯誤類型。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

備註

RpcEpRegisterNoReplace 函式會將專案新增至本機主機的 endpoint-map 資料庫。 此函式不會取代現有的資料庫專案。

當伺服器的多個實例在相同主機上執行時,伺服器會使用 RpcEpRegisterNoReplace ,而不是 RpcEpRegister 。 換句話說,當一個以上的伺服器實例隨時都會提供相同的介面 UUID、物件 UUID 和通訊協定序列時,請使用此函式。

由於呼叫 RpcEpRegisterNoReplace 時不會取代專案,因此伺服器必須在停止執行之前自行取消註冊。 否則,每次伺服器實例停止執行時,都會累積過時的數據,而不需呼叫 RpcEpUnregister。 過時專案會增加用戶端將接收不存在伺服器端點的可能性。 用戶端會在取得另一個端點之前,花時間嘗試與不存在的伺服器通訊。

伺服器可以使用 RpcEpRegister 和 RpcEpRegisterNoReplace 來註冊端點對應程式資料庫中的專案。 在 Windows 2000 之前,有兩個函式可供伺服器覆寫先前不再執行之伺服器實例左側端點對應程式資料庫中過時的專案。 端點對應程式資料庫會在伺服器停止運作時,自動移除伺服器實例所註冊的專案。 不過,基於安全性考慮,不允許伺服器取代另一部伺服器的端點對應程序專案。 因此, RpcEpRegisterRpcEpRegisterNoReplace 執行的功能大致相同。

伺服器應用程式會呼叫 RpcEpRegister ,以註冊呼叫下列任一函式所指定的端點:

如果伺服器也導出至 name-service 資料庫,伺服器會使用相同的 IfSpecBindingVectorUuidVector 值呼叫 RpcEpRegister,並在呼叫 RpcNsBindingExport 函式時使用。

如果使用通訊協定序列而不指定端點,RPC 運行時間連結庫會自動產生動態端點。 在此情況下,伺服器可以呼叫 RpcServerInqBindings ,後面接著 RpcEpRegisterNoReplace ,讓多個用戶端自行使用。 否則,只有啟動伺服器的用戶端才知道自動啟動的伺服器。

每個新增至 endpoint-map 資料庫的元素邏輯都包含下列專案:

  • 介面 UUID
  • 介面版本 (主要和次要)
  • 系結句柄
  • 物件 UUID (選擇性)
  • 註釋 (選擇性)
RpcEpRegisterNoReplace 會從 IfSpecBindingVectorUuidVector 參數建立交叉乘積,並將跨產品中的每個元素新增為端點對應資料庫中的個別註冊。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 rpcdce.h (包含 Rpc.h)
程式庫 Rpcrt4.lib
Dll Rpcrt4.dll

另請參閱

RpcBindingFromStringBinding

RpcEpRegister

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf