ADS_VLV 結構 (iads.h)

ADS_VLV結構包含用來執行虛擬清單檢視的中繼資料, (VLV) 搜尋。 此結構提供兩個角色。 首先,它會指定傳送至伺服器的搜尋喜好設定。 其次,它會從伺服器傳回 VLV 中繼資料。

語法

typedef struct _ads_vlv {
  DWORD  dwBeforeCount;
  DWORD  dwAfterCount;
  DWORD  dwOffset;
  DWORD  dwContentCount;
  LPWSTR pszTarget;
  DWORD  dwContextIDLength;
  LPBYTE lpContextID;
} ADS_VLV, *PADS_VLV;

成員

dwBeforeCount

指出用戶端從伺服器要求之目標專案之前的專案數。

dwAfterCount

指出用戶端從伺服器要求的目標專案之後的專案數目。

dwOffset

在輸入上,指出目標專案在清單中所要求的位移。 如果用戶端指定等於用戶端所假設內容計數的位移,則目標就是清單中的最後一個專案。 在輸出上,指出伺服器在清單中傳回目標專案位置的實際位移的最佳估計值。

dwContentCount

輸入值代表用戶端的內容計數估計值。 輸出值是伺服器的內容計數估計值。 如果用戶端傳送的內容計數為零,這表示伺服器必須使用其內容計數的估計值來取代用戶端的 。

pszTarget

選擇性。 Null 終止的 Unicode 字串,表示用戶端所要求的所需目標專案。 如果此參數包含非Null 值,伺服器會忽略 dwOffset 中指定的值,並根據清單的排序次序搜尋第一個目標專案,其主要排序索引鍵的值大於或等於指定的字串。

dwContextIDLength

選擇性。 參數,表示內容識別碼的長度。 在輸入上,如果在 lpCoNtextID中傳遞內容識別碼,則必須將此值設定為以位元組為單位的識別碼大小。 否則,它必須設定為等於零。 在輸出上,如果 lpCoNtextID 包含非Null 值,這表示伺服器所傳回之內容識別碼的長度,以位元組為單位。

lpContextID

選擇性。 指出伺服器產生的內容識別碼。 此參數可能會傳送至用戶端。 如果用戶端收到此參數,它應該會在與相同清單相關的後續要求中傳回它。 此互動可能會增強伺服器的效能和效率。 如果未將內容識別碼傳遞至伺服器,此成員必須設定為 Null 值。 輸出時,如果這個成員包含非Null 值,這會指向伺服器傳回的內容識別碼。

備註

若要透過 dwContentCountdwOffset設定 VLV,您也必須將 pszTarget 設定為 Null 值。 如果 pszTarget 包含非Null 值,則會當做位移使用,否則 會使用 lOffset 做為位移。 建議您將 結構初始化為零。

範例

下列程式碼範例示範如何擷取結果集中的前 30 個專案。

ADS_SEARCHPREF_INFO prefInfo[2];
ADS_VLV vlv;

vlv.dwBeforeCount=0;
vlv.dwAfterCount=30;
vlv.dwOffset=1;
vlv.dwContentCount=0;
vlv.pszTarget = NULL; 
vlv.dwContextIDLength = 0;
vlv.lpContextID = NULL;

// VLV set preferences.
prefInfo[0].dwSearchPref = ADS_SEARCHPREF_VLV;
prefInfo[0].vValue.dwType = ADSTYPE_PROV_SPECIFIC;
prefInfo[0].vValue.ProviderSpecific.dwLength = sizeof(ADS_VLV);
prefInfo[0].vValue.ProviderSpecific.lpValue = (LPBYTE) &vlv;

// Sort key set preferences.
prefInfo[1].dwSearchPref = ADS_SEARCHPREF_SORT_ON;
prefInfo[1].vValue.dwType = ADSTYPE_PROV_SPECIFIC;
prefInfo[1].vValue.ProviderSpecific.dwLength = sizeof(ADS_SORTKEY);
prefInfo[1].vValue.ProviderSpecific.lpValue = (LPBYTE) pSortKey;

hr = m_pSearch->SetSearchPreference(prefInfo, 2);

下列程式碼範例示範如何在以字母 「Ha」 開頭的結果集中擷取前 50 個專案。

ADS_VLV vlv;

vlv.dwBeforeCount=0;
vlv.dwAfterCount=50;
vlv.pszTarget= L"Ha";
vlv.lpContextID = NULL; 
vlv.dwContextIDLength = 0;

// For more information about how to set the preference, see the previous code example.

下列程式碼範例示範如何在大約 60% 的目標擷取前 100 個專案,假設伺服器先前傳回 dwContentCount 為 4294。

注意 vlvResp 代表先前由伺服器傳回 的ADS_VLV 結構。
 
ADS_VLV vlv;

vlv.dwBeforeCount=50;
vlv.dwAfterCount=50;
vlv.dwOffset=2577;  
vlv.dwContentCount=4294;
vlv.pszTarget = NULL;
vlv.dwContextIDLength = vlvResp.dwContextIDLength; 
vlv.lpContextID = vlvResp.lpContextID;

需求

   
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
標頭 iads.h

另請參閱

ADS_SEARCHPREF_ENUM

如何使用 VLV 搜尋

IDirectorySearch