RpcNsBindingLookupNext 函式 (rpcnsi.h)

RpcNsBindingLookupNext 函式會傳回指定介面和選擇性物件的相容系結句柄清單。

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

語法

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

參數

LookupContext

RpcNsBindingLookupBegin 函式傳回的名稱服務句柄。

BindingVec

傳回用戶端兼容伺服器系結句柄向量的指標位址。

傳回值

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

備註

RpcNsBindingLookupNext 函式會針對提供 RpcNsBindingLookupBegin 函式中 IfSpecObjUuid 參數所指定的介面和物件 UUID 的伺服器,傳回用戶端兼容伺服器系結句柄的向量。 (比較這與 RpcNsBindingImportNext,這會傳回單一相容的伺服器系結句柄。)

RpcNsBindingLookupNext 函式只會與名稱服務資料庫通訊,而不是直接與伺服器通訊。

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

  • 搜尋本機快取。
  • 如果在本機快取中找不到專案,請搜尋該計算機的 Active Directory。
  • 如果在本機計算機上找不到專案,請將廣播要求傳送至網域中所有其他 Active Directory 服務。

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

連續呼叫時, RpcNsBindingLookupNext 函式會周遊 name-service 資料庫專案,從每個專案收集用戶端相容的伺服器系結句柄。

當 Microsoft Active Directory 是名稱服務資料庫時, RpcNsBindingLookupNext 只有在指定的專案名稱為 null 且登錄中的預設專案) (未定義或空白時,才會周遊資料庫。 此外,由於 Active Directory 中不允許混合專案,因此函式只會搜尋伺服器項目名稱,而不是群組或配置檔名稱。

當 DCE 單元格目錄服務 (CDS) 是名稱服務資料庫,而搜尋開始的專案除了群組或配置檔名稱之外,還會包含系結句柄時, RpcNsBindingLookupNext 會先從 EntryName 傳回系結句柄,然後再搜尋群組或配置檔。 這表示函式可以在處理群組或配置文件的成員之前傳回部分完整向量。

傳回的相容系結句柄一律包含物件 UUID,其值取決於 RpcNsBindingImportBegin 函式中的 ObjUuid 參數。 如果指定了非 Null 物件 UUID,則傳回的系結句柄會包含該物件 UUID。 不過,如果指定 了 Null 物件 UUID 或 Null 值,則傳回的物件 UUID 是下列可能性的結果:

  • 如果伺服器未匯出任何物件 UUID,傳回的系結句柄會包含 nil 物件 UUID。
  • 如果伺服器導出了一個物件 UUID,則傳回的系結句柄會包含該物件 UUID。
  • 如果伺服器匯出多個物件 UUID,傳回的系結句柄會包含其中一個物件 UUID。 匯入下一個作業會以不具決定性的方式選取傳回的物件 UUID。 因此,可以從單一伺服器項目針對每個相容的系結句柄傳回不同的物件 UUID。
從伺服器系結句柄傳回的向量中,用戶端應用程式可以採用自己的準則來選取個別系結句柄,或者應用程式可以呼叫 RpcNsBindingSelect 函式來選取系結句柄。 RpcBindingToStringBindingRpcStringBindingParse 函式將有助於用戶端建立自己的選取準則。

用戶端應用程式可以使用選取的系結句柄嘗試對伺服器進行遠端過程調用。 如果客戶端無法與伺服器建立關聯性,它可以從向量中選取另一個系結句柄。 當已使用向量中的所有系結句柄時,用戶端應用程式會再次呼叫 RpcNsBindingLookupNext

每次用戶端呼叫 RpcNsBindingLookupNext 時,函式都會傳回另一個系結句柄的向量。 每個向量中傳回的系結句柄都是未排序的。 從這個函式的多個呼叫傳回的向量也會取消排序。

用戶端會呼叫 RpcNsBindingInqEntryName 函式,以取得系結來源的名稱服務資料庫伺服器項目名稱。

當搜尋到達名稱服務資料庫的結尾時,RpcNsBindingLookupNext 會傳回RPC_S_NO_MORE_BINDINGS的狀態,並傳回 NULLBindingVec 值。

RpcNsBindingLookupNext 函式會為傳回的 BindingVec 參數所參考的數據配置記憶體。 當用戶端應用程式使用向量完成時,它必須呼叫 RpcBindingVectorFree 函式來解除分配記憶體。 每個 RpcNsBindingLookupNext 的呼叫都需要對應的 RpcBindingVectorFree 呼叫。

用戶端負責呼叫 RpcNsBindingLookupDone 函式來刪除查閱內容,或如果您想要讓應用程式開始新的相容伺服器搜尋。

規格需求

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

另請參閱

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse