Ricerche sincrone e asincrone con IDirectorySearch
Quando si esegue una ricerca usando l'interfaccia IDirectorySearch, il metodo IDirectorySearch::ExecuteSearch non invia la richiesta di ricerca al server. Questo metodo salva solo i parametri di ricerca. La richiesta di ricerca viene effettivamente inviata quando si chiama IDirectorySearch::GetFirstRow o IDirectorySearch::GetNextRow.
Per le ricerche di Active Directory, la differenza principale tra sincrona e asincrona è quando viene restituita la prima riga del risultato, ovvero quando viene restituita la prima chiamata GetFirstRow o GetNextRow.
In una ricerca sincrona, se il paging non è abilitato, la prima riga viene restituita quando il server ha costruito e restituito l'intero set di risultati al client. Se il paging è abilitato, la prima riga viene restituita quando viene restituita la prima pagina del set di risultati.
In una ricerca asincrona, se il paging non è abilitato, la prima riga viene restituita quando il server ha costruito la prima riga del set di risultati. Se il paging è abilitato, la prima riga viene restituita quando viene restituita la prima pagina del set di risultati.
Il tipo di ricerca predefinito è sincrono. Per specificare una ricerca asincrona, impostare un'opzione di ricerca ADS_edizione StandardARCHPREF_ASYNCHRONOUS con un valore ADSTYPE_BOOLEAN true nella matrice ADS_edizione StandardARCHPREF_INFO passata al metodo IDirectorySearch::SetSearchPreference. Questa operazione è illustrata nell'esempio di codice seguente.
ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_ASYNCHRONOUS;
SearchPref.vValue.dwType = ADSTYPE_BOOLEAN;
SearchPref.vValue.Boolean = TRUE;