Поделиться через


структура 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, которая указывает требуемую целевую запись, запрошенную клиентом. Если этот параметр содержит значение, отличное от NULL , сервер игнорирует значение, указанное в dwOffset , и выполняет поиск первой целевой записи, значение которой для первичного ключа сортировки больше или равно указанной строке в зависимости от порядка сортировки списка.

dwContextIDLength

Необязательный элемент. Параметр, указывающий длину идентификатора контекста. При входных данных при передаче идентификатора контекста в lpContextID необходимо задать размер идентификатора в байтах. В противном случае он должен быть равен нулю. Если в выходных данных lpContextID содержит значение, отличное от NULL , это указывает на длину в байтах идентификатора контекста, возвращаемого сервером.

lpContextID

Необязательный элемент. Указывает идентификатор контекста, созданный сервером. Этот параметр может быть отправлен клиентам. Если клиент получает этот параметр, он должен вернуть его без изменений в последующем запросе, связанном с тем же списком. Это взаимодействие может повысить производительность и эффективность серверов. Если идентификатор контекста не передается серверу, для этого элемента должно быть задано значение NULL . Если в выходных данных этот элемент содержит значение, отличное от NULL , это указывает на идентификатор контекста, возвращенный сервером.

Комментарии

Чтобы задать VLV с помощью dwContentCount и dwOffset, необходимо также задать для 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);

В следующем примере кода показано, как получить первые 50 записей в результирующем наборе, которые начинаются с букв "Ha".

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.

В следующем примере кода показано, как получить первые 100 записей в приблизительном целевом объекте 60 %, при условии, что сервер ранее возвращал 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