共用方式為


rpcNsBindingExportW 函式 (rpcnsi.h)

RpcNsBindingExport 函式會建立名稱服務資料庫專案,其中包含多個系結句柄和伺服器的多個物件。

注意 Windows Vista 和更新版本的作業系統不支援此函式。
 

語法

RPC_STATUS RpcNsBindingExportW(
  unsigned long      EntryNameSyntax,
  RPC_WSTR           EntryName,
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVec,
  UUID_VECTOR        *ObjectUuidVec
);

參數

EntryNameSyntax

EntryName 的語法。

若要使用登錄值專案 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax中指定的語法,請提供值 RPC_C_NS_SYNTAX_DEFAULT。

EntryName

要匯出系結句柄和物件 UUID 的項目名稱指標。 您無法提供 Null 或空字串。 用戶端和伺服器都必須使用相同的項目名稱。

IfSpec

存根產生的數據結構,指定要導出的介面。 null 值表示沒有系結句柄可匯出 (只會匯出物件 UUID,) 並忽略 BindingVec

BindingVec

要導出的伺服器系結指標。 null 值表示沒有系結句柄可以導出, (只會匯出物件 UUID) 。

ObjectUuidVec

伺服器所提供之物件 UUID 向量的指標。 伺服器應用程式會建構此向量。 null 值表示沒有物件 UUID 可匯出, (只有系結句柄才會匯出) 。

傳回值

意義
RPC_S_OK
呼叫成功。
RPC_S_NOTHING_TO_EXPORT
沒有可導出的動作。
RPC_S_INVALID_BINDING
系結句柄無效。
RPC_S_WRONG_KIND_OF_BINDING
這是作業的系結錯誤類型。
RPC_S_INVALID_NAME_SYNTAX
名稱語法無效。
RPC_S_UNSUPPORTED_NAME_SYNTAX
不支援名稱語法。
RPC_S_INCOMPLETE_NAME
名稱不完整。
RPC_S_NO_NS_PRIVILEGE
沒有名稱服務作業的許可權。
RPC_S_NAME_SERVICE_UNAVAILABLE
無法使用名稱服務。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

備註

RpcNsBindingExport 函式可讓伺服器應用程式公開提供名稱服務資料庫中的介面,以供任何用戶端應用程式使用。

從 Windows 2000 生效,RPC 運行時間環境會使用 Active Directory 作為其名稱服務資料庫。 這表示授權的導出專案會保存在名稱服務中,即使在重新啟動之後仍會顯示。 未經授權的導出不會保存。 如需授權和 存取控制 清單 的詳細資訊,請參閱平臺軟體開發工具包 (SDK) 的安全性一節中的 存取控制。

若要匯出介面,伺服器應用程式會使用 介面呼叫 RpcNsBindingExport 例程,而伺服器系結會處理用戶端可用來存取伺服器。 伺服器應用程式也會呼叫 RpcNsBindingExport 函式,以公開提供物件 UUID (資源 () 名稱服務資料庫中提供的資源 () 。

伺服器可以在對 RpcNsBindingExport 的單一呼叫中匯出介面和物件,也可以個別導出它們。如果 EntryName 指定的 name-service 資料庫專案不存在, RpcNsBindingExport 會嘗試建立它。 在此情況下,伺服器應用程式必須具有建立項目的許可權。除了呼叫 RpcNsBindingExport 之外,呼叫 RpcServerUseAllProtseqsRpcServerUseProtseq 函式的伺服器也必須呼叫 RpcEpRegister 或 RpcEpRegisterNoReplace 向本機端點對應資料庫註冊。

伺服器不需要將其任何介面導出至 name-service 資料庫。 當伺服器未匯出時,只有私下知道伺服器系結資訊的用戶端可以存取其介面。 例如,建構字串系結所需資訊的用戶端可以呼叫 RpcBindingFromStringBinding 來建立系結句柄,以便對伺服器進行遠端過程調用。

呼叫 RpcNsBindingExport 之前,伺服器必須執行下列動作:

RpcServerInqBindings 函式傳回的向量會成為 RpcNsBindingExportBinding 參數。 若要防止匯出系結,請將選取的向量元素設定為 Null 值。

如果伺服器多次匯出至相同的名稱服務資料庫專案,當該數據與伺服器專案中的系結資訊不同時, 對 RpcNsBindingExport 的第二個和後續呼叫會新增系結資訊和物件 UUID。 現有的數據不會從專案中移除。

若要從 name-service 資料庫移除系結句柄和物件 UUID,伺服器應用程式會呼叫 RpcNsBindingUnexport 函式。

伺服器項目必須至少有一個系結句柄存在。 因此,只將 UUID 匯出至不存在的項目沒有任何作用,而且取消匯出所有系結句柄會刪除專案。

注意

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

規格需求

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

另請參閱

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf