共用方式為


RpcNsBindingExportA 函式 (rpcnsi.h)

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

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

語法

RPC_STATUS RpcNsBindingExportA(
  unsigned long      EntryNameSyntax,
  RPC_CSTR           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(s) 物件。

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

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

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

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

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

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

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

注意

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

要求

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

另請參閱

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf