Freigeben über


Synchrone und asynchrone Suchvorgänge mit IDirectorySearch

Wenn Sie eine Suche mithilfe der IDirectorySearch-Schnittstelle ausführen, sendet die IDirectorySearch::ExecuteSearch-Methode die Suchanforderung nicht an den Server. Diese Methode speichert nur die Suchparameter. Die Suchanforderung wird tatsächlich gesendet, wenn Sie IDirectorySearch::GetFirstRow oder IDirectorySearch::GetNextRow aufrufen.

Bei Active Directory-Suchvorgängen besteht der Hauptunterschied zwischen synchron und asynchron darin, wenn die erste Zeile des Ergebnisses zurückgegeben wird, d. h. wenn der erste GetFirstRow - oder GetNextRow-Aufruf zurückgegeben wird.

Wenn das Paging bei einer synchronen Suche nicht aktiviert ist, wird die erste Zeile zurückgegeben, wenn der Server das gesamte Resultset erstellt und an den Client zurückgegeben hat. Wenn paging aktiviert ist, wird die erste Zeile zurückgegeben, wenn die erste Seite des Resultsets zurückgegeben wird.

Wenn das Paging bei einer asynchronen Suche nicht aktiviert ist, wird die erste Zeile zurückgegeben, wenn der Server die erste Zeile des Resultsets erstellt hat. Wenn paging aktiviert ist, wird die erste Zeile zurückgegeben, wenn die erste Seite des Resultsets zurückgegeben wird.

Der Standardsuchtyp ist synchron. Um eine asynchrone Suche anzugeben, legen Sie eine ADS_SEARCHPREF_ASYNCHRONOUS Suchoption mit dem ADSTYPE_BOOLEAN Wert TRUE im ADS_SEARCHPREF_INFO Array fest, das an die IDirectorySearch::SetSearchPreference-Methode übergeben wird. Dieser Vorgang wird im folgenden Codebeispiel gezeigt.

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