Result Caching with IDirectorySearch

The ADS_SEARCHPREF_CACHE_RESULTS preference caches the result set on the client. Result caching enables an application to retain a retrieved result set and go through the retrieved rows again. It also enables cursor support where the IDirectorySearch::GetNextRow and IDirectorySearch::GetPreviousRow methods can be used to move up and down the result set.

By default, result caching is disabled. Result caching should be enabled if any one of the following is true:

  • If the same result set must be enumerated multiple times without performing the search again on the server.
  • If performing the search is resource-intensive on the server (slow connection, large result set, or complex query).
  • If cursor support is required.

Turn off caching if your application must reduce memory requirements for caching a large result set at the client.

Result caching increases the memory requirements on the client, so result caching should be disabled if this is a concern.

To enable result caching, set an ADS_SEARCHPREF_CACHE_RESULTS search option with an ADSTYPE_BOOLEAN value of TRUE in the ADS_SEARCHPREF_INFO array passed to the IDirectorySearch::SetSearchPreference method.

The following code example shows how to enable result caching.

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