RpcNsBindingImportNext 函式 (rpcnsi.h)
RpcNsBindingImportNext函式會查閱介面 (,並選擇性地從名稱服務資料庫) 物件,並在找到時傳回相容伺服器的系結控制碼。
語法
RPC_STATUS RpcNsBindingImportNext(
RPC_NS_HANDLE ImportContext,
RPC_BINDING_HANDLE *Binding
);
參數
ImportContext
從 RpcNsBindingImportBegin 函式傳回的名稱服務控制碼。
Binding
傳回伺服器用戶端相容伺服器系結控制碼的指標。
傳回值
值 | 意義 |
---|---|
|
呼叫成功。 |
|
沒有其他系結。 |
|
無法使用名稱服務。 |
備註
RpcNsBindingImportNext函式會針對提供RpcNsBindingImportBegin函式中IfSpec和ObjUuid參數所指定的介面和物件 UUID 的伺服器,傳回一個用戶端相容的伺服器系結控制碼。 函式只會與 name-service 資料庫通訊,而不是直接與伺服器通訊。
從 Windows 2000 生效,RPC 環境會使用 Active Directory 作為其名稱服務資料庫,以及執行時間環境執行搜尋的順序如下:
- 在本機快取中搜尋。 如果沒有專案,則為
- 在 Active Directory 中搜尋。 如果沒有專案,則為
- 將廣播要求傳送至網域中的所有其他目錄服務。
請注意,如果專案存在於 Active Directory 中,但沒有與專案相關聯的資訊,則執行時間環境不會發出此廣播要求。
- 如果伺服器未匯出任何物件 UUID,傳回的系結控制碼會包含 nil 物件 UUID。
- 如果伺服器匯出了一個物件 UUID,則傳回的系結控制碼會包含該物件 UUID。
- 如果伺服器匯出多個物件 UUID,傳回的系結控制碼會包含其中一個物件 UUID。 匯入下一個作業會以不具決定性的方式選取傳回的物件 UUID。 因此,可以從單一伺服器專案針對每個相容的系結控制碼傳回不同的物件 UUID。
每次用戶端呼叫 RpcNsBindingImportNext時,函式都會傳回另一個伺服器系結控制碼。 傳回的系結控制碼未排序。 用戶端應用程式會呼叫 RpcNsBindingInqEntryName 函式,以在系結控制碼的來源專案名稱中取得 name-service 資料庫。當搜尋到達 name-service 資料庫的結尾時, RpcNsBindingInqEntryName 會傳回RPC_S_NO_MORE_BINDINGS的狀態,並傳回 Null的系結參數值。
RpcNsBindingImportNext函式會為傳回的Binding參數所參考的資料配置儲存體。 當用戶端應用程式完成系結控制碼時,它必須呼叫 RpcBindingFree 以解除配置儲存體。 每個 RpcNsBindingImportNext 呼叫都需要對應的 RpcBindingFree呼叫。
用戶端負責呼叫 RpcNsBindingImportDone 函式,以刪除匯入內容。 用戶端也會先呼叫 RpcNsBindingImportDone ,再呼叫 RpcNsBindingImportBegin 以開始新的相容伺服器搜尋。 因為每個新搜尋傳回的系結控制碼順序不同,所以每次執行應用程式時,系結控制碼傳回至應用程式的順序可能會不同。
需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | rpcnsi.h (包含 Rpc.h) |
程式庫 | Rpcns4.lib |
Dll | Rpcns4.dll |