Partager via


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 quand la première ligne du résultat est retournée, c’est-à-dire lorsque le premier appel GetFirstRow ou GetNextRow est retourné.

Dans une recherche synchrone, si la pagination n’est pas activée, la première ligne est retournée lorsque le serveur a construit et retourné l’ensemble du jeu de résultats 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 ADS_SEARCHPREF_ASYNCHRONOUS avec une valeur ADSTYPE_BOOLEANTRUE dans le tableau ADS_SEARCHPREF_INFO passé à 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;