структура 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.
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 |