Traitement des résultats de la recherche
Après le premier appel à IDirectorySearch::GetFirstRow ou IDirectorySearch::GetNextRow, S_OK, S_ADS_NOMORE_ROWS ou un résultat d’erreur est retourné.
Si la valeur de retour est S_ADS_NOMORE_ROWS, aucun autre objet correspondant au filtre n’a été trouvé. Si un résultat d’erreur est retourné, la requête a échoué. Dans les deux cas, vous n’êtes pas obligé de traiter les lignes du résultat, car rien n’a été retourné.
Si S_OK est retourné, une ligne a été récupérée. Vous pouvez analyser les colonnes par nom à l’aide de IDirectorySearch::GetColumn. Le nom est l’attribut lDAPDisplayName de la colonne. L’ensemble de toutes les colonnes a été défini par le paramètre pAttributeNames de la méthode IDirectorySearch::ExecuteSearch . Si NULL a été spécifié, l’ensemble de toutes les colonnes est l’union de toutes les propriétés trouvées pour tous les objets retournés. Pour lire l’ensemble des colonnes retournées pour un objet, utilisez IDirectorySearch::GetNextColumnName pour itérer chaque colonne et utilisez le nom de colonne retourné pour appeler IDirectorySearch::GetColumn.
La méthode IDirectorySearch::GetColumn retourne une structure ADS_SEARCH_COLUMN qui contient le nom de l’attribut, le type de l’attribut, le nombre de valeurs et un pointeur vers un tableau de structures ADSVALUE qui contiennent les valeurs. Vous pouvez parcourir les structures ADSVALUE pour lire les valeurs de la propriété retournée par la colonne. Vous devez lire le membre approprié de la structure ADSVALUE en fonction de l’ADSTYPE spécifié par le membre dwADsType de la structure ADS_SEARCH_COLUMN (ou le membre dwType de la structure ADSVALUE ). Par exemple, si dwADsType a été ADSTYPE_INTEGER, vous devez lire le membre Integer de chaque structure ADSVALUE .
Pour plus d’informations et un exemple de code, consultez Exemple de code pour la recherche d’utilisateurs.