共用方式為


搜尋分散式路由表

必須先建立搜尋查詢,應用程式才能搜尋分散式路由表 (DRT) 。 呼叫 DrtStartSearch 函式時,應用程式會指定所需的索引鍵值。 搜尋的行為取決於應用程式在 DRT_SEARCH_INFO 結構中指定的資訊。

一般而言,當搜尋探索結果時,會發出應用程式事件訊號,並在搜尋結束時發出另一個事件。 不過,如果 fIterative 是在 DRT_SEARCH_INFO中設定,當與每個節點進行連絡時,可以發出應用程式事件訊號。

發出事件訊號之後,應用程式接著會呼叫 DrtGetSearchResult 函式來取得結果。 如果傳回的程式碼 S_OK,則會在 API 傳回 的DRT_SEARCH_RESULT 結構中指向結果。 傳回的結果會落在 DRT_SEARCH_INFO中指定的值範圍。 如果搜尋找不到相符專案,則結果傳回時只會傳回 DRT_E_NO_MORE 值。

下列資訊詳述 DRT_SEARCH_INFO 包含的成員如何允許應用程式明確指定 DRT 基礎結構的搜尋行為:

fAllowCurrentInstanceMatch

根據預設,DRT 搜尋結果只會包含位於本機節點外部的相符專案。 設定 fAllowCurrentInstanceMatch 會指定搜尋結果也包含本機 DRT 實例中找到的相符專案。

cMaxEndpoints

搜尋傳回的結果數量和範圍是由應用程式所指定,其中具有 cMaxEndpoints (數量) ,以及pMinimumKey 和 pMaximumKey (範圍) 值,並由DRT_SEARCH_INFO參考。

當 cMaxEndpoints = 1時,DRT 基礎結構會搜尋索引鍵,並在DRT_SEARCH_INFO中的pMinimumKey 和 pMaximumKey值所指定的範圍內傳回一個相符專案。 此比對可以是完全相符專案或範圍內最接近的相符專案。 如果找不到相符專案,則會傳回 DRT_E_NO_MORE

如果 cMaxEndpoints > 1,DRT 基礎結構會傳回與 cMaxEndpoints值相等範圍內的相符專案。 傳回的相符專案可以包含完全相符專案,或範圍內最接近的相符結果。 此外,如果 pMinimumKeypMaximumKey 設定為相同的值,則只會針對該值執行搜尋,如果找不到,則會傳回 DRT_E_NO_MORE

fAnyMatchInRange

fAnyMatchInRange成員指出搜尋是否會在第一個相符專案位於指定範圍內之後停止,或者搜尋是否會繼續尋找最接近DrtStartSearch API 中所指定索引鍵的相符專案。 設定 fAnyMatchInRange時,不論DRT_SEARCH_INFOcMaxEndpoints的指定值為何,搜尋都會使用cMaxEndpoints = 1來執行。

fIterative

fIterative成員會指定搜尋期間 DRT 基礎結構所連絡的每個節點,是否具有透過DRT_SEARCH_RESULT提供給應用程式的金鑰/端點資料。 藉由將 fIterative 設定為 TRUE,將會強制 cMaxEndpoints = 1 的值。 當 fIterative 在 DRT 的搜尋查詢內設定為 TRUE 時,在與每個節點或「躍點」連絡之後,應用程式會重新呼叫。每個躍點結果都包含一個索引鍵,指出 DRT 將在下一個搜尋的節點。 躍點結果會透過 DrtGetSearchResult 傳回,作為 DRT_MATCH_INTERMEDIATE 結果。

pMinimumKey 和 pMaximumKey

pMinimumKeypMaximumKey成員可用來搜尋落在某個範圍內的索引鍵。 如果 fAnyMatchInRange 成員設定為 FALSE,DRT 會傳回最接近索引鍵 (s) 指定的搜尋目標 (使用 DrtStartSearch 函式中所傳遞的 pKey 引數) 落在範圍內。 請注意,傳遞至DrtStartSearchpKey引數必須落在pMinimumKey 和 pMaximumKey所定義的範圍內。 若要搜尋精確的索引鍵,請將 pMinimumKeypMaximumKeypKey 設定為相同的值。

註冊和取消註冊金鑰

關於分散式路由表

分散式路由表 API 參考