Pencarian Sinkron dan Asinkron dengan IDirectorySearch
Saat Anda melakukan pencarian menggunakan antarmuka IDirectorySearch, metode IDirectorySearch::ExecuteSearch tidak mengirim permintaan pencarian ke server. Metode ini hanya menyimpan parameter pencarian. Permintaan pencarian sebenarnya dikirim ketika Anda memanggil IDirectorySearch::GetFirstRow atau IDirectorySearch::GetNextRow.
Untuk pencarian Direktori Aktif, perbedaan utama antara sinkron dan asinkron adalah ketika baris pertama hasil dikembalikan, yaitu, ketika panggilan GetFirstRow atau GetNextRow pertama kembali.
Dalam pencarian sinkron, jika halaman tidak diaktifkan, baris pertama dikembalikan ketika server telah membangun dan mengembalikan seluruh hasil yang diatur ke klien. Jika halaman diaktifkan, baris pertama dikembalikan saat halaman pertama kumpulan hasil dikembalikan.
Dalam pencarian asinkron, jika halaman tidak diaktifkan, baris pertama dikembalikan ketika server telah membangun baris pertama dari tataan hasil. Jika halaman diaktifkan, baris pertama dikembalikan saat halaman pertama kumpulan hasil dikembalikan.
Jenis pencarian default sinkron. Untuk menentukan pencarian asinkron, atur opsi pencarian ADS_SEARCHPREF_ASYNCHRONOUS dengan nilai ADSTYPE_BOOLEAN TRUE dalam array ADS_SEARCHPREF_INFO yang diteruskan ke metode IDirectorySearch::SetSearchPreference. Operasi ini ditampilkan dalam contoh kode berikut.
ADS_SEARCHPREF_INFO SearchPref;
SearchPref.dwSearchPref = ADS_SEARCHPREF_ASYNCHRONOUS;
SearchPref.vValue.dwType = ADSTYPE_BOOLEAN;
SearchPref.vValue.Boolean = TRUE;