Обработка результатов поиска

После первого вызова IDirectorySearch::GetFirstRow или IDirectorySearch::GetNextRow возвращается либо S_OK, S_ADS_NOMORE_ROWS, либо возвращается результат ошибки.

Если возвращаемое значение S_ADS_NOMORE_ROWS, больше объектов, соответствующих фильтру, не найдено. Если возвращается результат ошибки, запрос завершился ошибкой. В обоих случаях обработка строк в результате не требуется, так как ничего не было возвращено.

Если возвращается S_OK , получена строка. Столбцы можно анализировать по имени с помощью IDirectorySearch::GetColumn. Имя — lDAPDisplayName атрибута в столбце. Набор всех столбцов был определен параметром pAttributeNames метода IDirectorySearch::ExecuteSearch . Если задано значение NULL , набор всех столбцов является объединением всех свойств, найденных для всех возвращенных объектов. Чтобы прочитать весь набор столбцов, возвращаемых для объекта, используйте IDirectorySearch::GetNextColumnName для итерации каждого столбца и используйте имя столбца, возвращенное для вызова IDirectorySearch::GetColumn.

Метод IDirectorySearch::GetColumn возвращает ADS_SEARCH_COLUMN структуру, содержащую имя атрибута, тип атрибута, количество значений и указатель на массив структур ADSVALUE , содержащих значения. Для чтения значений свойства, возвращаемого столбцом, можно выполнить цикл по структурам ADSVALUE . Необходимо прочитать соответствующий элемент структуры ADSVALUE на основе ADSTYPE , указанного членом dwADsType структуры ADS_SEARCH_COLUMN (или члена dwType структуры ADSVALUE ). Например, если dwADsType был ADSTYPE_INTEGER, вы будете читать целочисленный член каждой структуры ADSVALUE .

Дополнительные сведения и пример кода см. в примере кода для поиска пользователей.