Usando o método SetSearchPreference
Chamar o método IDirectorySearch::SetSearchPreference altera a maneira como os resultados da pesquisa são obtidos e apresentados por meio da interface IDirectorySearch.
A documentação do SDK define SetSearchPreference da seguinte maneira:
HRESULT SetSearchPreference(
//Search preferences to be set.
PADS_SEARCHPREF_INFO pSearchPrefs,
//Number of preferences.
DWORD dwNumPrefs
);
Várias preferências podem ser definidas passando uma matriz como o primeiro parâmetro e o tamanho da matriz como o segundo parâmetro.
ADS_SEARCHPREF_INFO arSearchPrefs[2];
arSearchPrefs[0].dwSearchPref = ADS_SEARCHPREF_PAGESIZE;
arSearchPrefs[0].vValue.dwType = ADSTYPE_INTEGER;
arSearchPrefs[0].vValue.Integer = 100;
arSearchPrefs[1].dwSearchPref = ADS_SEARCHPREF_SEARCH_SCOPE;
arSearchPrefs[1].vValue.dwType = ADSTYPE_INTEGER;
arSearchPrefs[1].vValue.Integer = ADS_SCOPE_SUBTREE;
hr = pDSearch->SetSearchPreference(&arSearchPrefs, 2);
Este exemplo define o tamanho da página como 100 linhas e o escopo como o tipo ADS_SCOPE_SUBTREE. A configuração de tamanho de página faz com que o servidor retorne dados imediatamente ao cliente, após o cálculo de 100 linhas. A configuração ADS_SCOPE_SUBTREE faz com que a pesquisa abranja todos os ramos na árvore abaixo do ponto a partir do qual a pesquisa está sendo executada.