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 作為其名稱服務資料庫。 這表示授權的匯出專案會保存在名稱服務中,即使在重新開機之後仍會顯示。 未經授權的匯出不會保存。 如需授權和存取控制清單的詳細資訊,請參閱 Platform Software Development Kit (SDK) ) 中的存取控制

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

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

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

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

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

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

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

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

注意

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

需求

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

另請參閱

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf