Recherches synchrones et asynchrones avec IDirectorySearch

Lorsque vous effectuez une recherche à l’aide de l’interface IDirectorySearch , la méthode IDirectorySearch :: ExecuteSearch n’envoie pas la demande de recherche au serveur. Cette méthode enregistre uniquement les paramètres de recherche. La demande de recherche est en fait envoyée lorsque vous appelez IDirectorySearch :: GetFirstRow ou IDirectorySearch :: GetNextRow.

Pour les recherches Active Directory, la principale différence entre synchrone et asynchrone est lorsque la première ligne du résultat est retournée, c’est-à-dire lorsque le premier appel GetFirstRow ou GetNextRow retourne.

Dans une recherche synchrone, si la pagination n’est pas activée, la première ligne est retournée lorsque le serveur a créé et retourné le jeu de résultats entier au client. Si la pagination est activée, la première ligne est retournée lorsque la première page du jeu de résultats est retournée.

Dans une recherche asynchrone, si la pagination n’est pas activée, la première ligne est retournée lorsque le serveur a construit la première ligne du jeu de résultats. Si la pagination est activée, la première ligne est retournée lorsque la première page du jeu de résultats est retournée.

Le type de recherche par défaut est synchrone. Pour spécifier une recherche asynchrone, définissez une option de recherche _ _ asynchrone SEARCHPREF ADS avec la valeur _ booléenne ADSTYPE true dans le tableau d' _ _ informations SEARCHPREF ADS transmis à la méthode IDirectorySearch :: SetSearchPreference . Cette opération est illustrée dans l’exemple de code suivant.

ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_ASYNCHRONOUS;
SearchPref.vValue.dwType = ADSTYPE_BOOLEAN;
SearchPref.vValue.Boolean = TRUE;