处理搜索结果
首次调用 IDirectorySearch::GetFirstRow 或 IDirectorySearch::GetNextRow 后,返回 S_OK、S_ADS_NOMORE_ROWS 或错误结果。
如果返回值为 S_ADS_NOMORE_ROWS,则表示没有找到更多匹配筛选器的对象。 如果返回错误结果,则表示查询失败。 在这两种情况下,都不需要处理结果中的行,因为没有返回任何结果。
如果返回 S_OK,则表示已检索到一行。 可以使用 IDirectorySearch::GetColumn 来按列名对列进行解析。 该名称是列中属性的 lDAPDisplayName 名称。 所有列的集合由 IDirectorySearch::ExecuteSearch 方法的 pAttributeNames 参数定义。 如果指定了 NULL,则所有列的集合是为所有返回对象找到的所有属性的集合。 要读取对象返回的整个列集,请使用 IDirectorySearch::GetNextColumnName 来遍历每一列,并使用返回的列名调用 IDirectorySearch::GetColumn。
IDirectorySearch::GetColumn 方法会返回一个 ADS_SEARCH_COLUMN 结构,其中包含属性名称、属性类型、值计数,以及指向包含值的 ADSVALUE 结构数组的指针。 可以循环访问 ADSVALUE 结构,以读取列返回的属性值。 必须根据 ADS_SEARCH_COLUMN 结构的 dwADsType 成员(或 ADSVALUE 结构的 dwType 成员)指定的 ADSTYPE 来读取 ADSVALUE 结构的相应成员。 例如,如果 dwADsType 是 ADSTYPE_INTEGER,则将读取每个 ADSVALUE 结构的 Integer 成员。
有关详细信息和代码示例,请参阅搜索用户的代码示例。