IDirectorySearch を使用した同期検索と非同期検索

IDirectorySearch インターフェイスを使用して検索を実行する場合、IDirectorySearch::ExecuteSearch メソッドは検索要求をサーバーに送信しません。 このメソッドは、検索パラメーターのみを保存します。 検索要求は、IDirectorySearch::GetFirstRow または IDirectorySearch::GetNextRow を呼び出すときに実際に送信されます。

Active Directory 検索の場合、同期と非同期の主な違いは、結果の最初の行が返されたとき、つまり最初の GetFirstRow または GetNextRow 呼び出しが返されたときです。

同期検索では、ページングが有効になっていない場合、サーバーが構築され、結果セット全体がクライアントに返された時、最初の行が返されます。 ページングが有効になっている場合、結果セットの最初のページが返されるときに最初の行が返されます。

非同期検索では、ページングが有効になっていない場合、サーバーが結果セットの最初の行を構築したときに最初の行が返されます。 ページングが有効になっている場合、結果セットの最初のページが返されるときに最初の行が返されます。

既定の検索の種類は同期です。 非同期検索を指定するには、IDirectorySearch::SetSearchPreference メソッドに渡される ADS_SEARCHPREF_INFO 配列の ADSTYPE_BOOLEAN 値を TRUE にし、ADS_SEARCHPREF_ASYNCHRONOUS 検索オプションを設定します。 この操作は、次のコード例に表示されています。

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