Búsquedas sincrónicas y asincrónicas con IDirectorySearch
Cuando se realiza una búsqueda mediante la interfaz IDirectorySearch , el método IDirectorySearch::ExecuteSearch no envía la solicitud de búsqueda al servidor. Este método solo guarda los parámetros de búsqueda. La solicitud de búsqueda se envía realmente cuando se llama a IDirectorySearch::GetFirstRow o IDirectorySearch::GetNextRow.
En las búsquedas de Active Directory, la diferencia principal entre sincrónico y asincrónico es cuando se devuelve la primera fila del resultado, es decir, cuando se devuelve la primera llamada GetFirstRow o GetNextRow .
En una búsqueda sincrónica, si la paginación no está habilitada, se devuelve la primera fila cuando el servidor ha construido y devuelto todo el conjunto de resultados al cliente. Si la paginación está habilitada, se devuelve la primera fila cuando se devuelve la primera página del conjunto de resultados.
En una búsqueda asincrónica, si la paginación no está habilitada, se devuelve la primera fila cuando el servidor ha construido la primera fila del conjunto de resultados. Si la paginación está habilitada, se devuelve la primera fila cuando se devuelve la primera página del conjunto de resultados.
El tipo de búsqueda predeterminado es sincrónico. Para especificar una búsqueda asincrónica, establezca una opción de búsqueda ADS_SEARCHPREF_ASYNCHRONOUS con un valor ADSTYPE_BOOLEAN de TRUE en la matriz de ADS_SEARCHPREF_INFO que se pasa al método IDirectorySearch::SetSearchPreference . Esta operación se muestra en el ejemplo de código siguiente.
ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_ASYNCHRONOUS;
SearchPref.vValue.dwType = ADSTYPE_BOOLEAN;
SearchPref.vValue.Boolean = TRUE;