RpcNsBindingImportNext 函式 (rpcnsi.h)

RpcNsBindingImportNext函式會查閱介面 (,並選擇性地從名稱服務資料庫) 物件,並在找到時傳回相容伺服器的系結控制碼。

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

語法

RPC_STATUS RpcNsBindingImportNext(
  RPC_NS_HANDLE      ImportContext,
  RPC_BINDING_HANDLE *Binding
);

參數

ImportContext

RpcNsBindingImportBegin 函式傳回的名稱服務控制碼。

Binding

傳回伺服器用戶端相容伺服器系結控制碼的指標。

傳回值

意義
RPC_S_OK
呼叫成功。
RPC_S_NO_MORE_BINDINGS
沒有其他系結。
RPC_S_NAME_SERVICE_UNAVAILABLE
無法使用名稱服務。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

備註

RpcNsBindingImportNext函式會針對提供RpcNsBindingImportBegin函式中IfSpecObjUuid參數所指定的介面和物件 UUID 的伺服器,傳回一個用戶端相容的伺服器系結控制碼。 函式只會與 name-service 資料庫通訊,而不是直接與伺服器通訊。

從 Windows 2000 生效,RPC 環境會使用 Active Directory 作為其名稱服務資料庫,以及執行時間環境執行搜尋的順序如下:

  • 在本機快取中搜尋。 如果沒有專案,則為
  • 在 Active Directory 中搜尋。 如果沒有專案,則為
  • 將廣播要求傳送至網域中的所有其他目錄服務。

    請注意,如果專案存在於 Active Directory 中,但沒有與專案相關聯的資訊,則執行時間環境不會發出此廣播要求。

傳回的相容系結控制碼一律包含物件 UUID,其值取決於RpcNsBindingImportBegin函式中的ObjUuid參數。 如果指定了非Null 物件 UUID,傳回的系結控制碼會包含該物件 UUID。 不過,如果指定 Null 物件 UUID 或 Null 值,則傳回的物件 UUID 是下列可能性的結果:
  • 如果伺服器未匯出任何物件 UUID,傳回的系結控制碼會包含 nil 物件 UUID。
  • 如果伺服器匯出了一個物件 UUID,則傳回的系結控制碼會包含該物件 UUID。
  • 如果伺服器匯出多個物件 UUID,傳回的系結控制碼會包含其中一個物件 UUID。 匯入下一個作業會以不具決定性的方式選取傳回的物件 UUID。 因此,可以從單一伺服器專案針對每個相容的系結控制碼傳回不同的物件 UUID。
RpcNsBindingImportNext函式會選取並從找到的相容系結控制碼傳回一個伺服器系結控制碼。 用戶端應用程式可以使用該系結控制碼來嘗試對伺服器進行遠端程序呼叫。 如果用戶端無法與伺服器建立關聯性,它可以再次呼叫 RpcNsBindingImportNext

每次用戶端呼叫 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

另請參閱

RpcBindingFree

RpcNsBindingImportBegin

RpcNsBindingImportDone

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcNsBindingLookupNext

RpcNsBindingSelect