Directory Services


The IDirectorySearch::ExecuteSearch method executes a search and passes the results to the caller. Some providers, such as LDAP, will defer the actual execution until the caller invokes the IDirectorySearch::GetFirstRow method or the IDirectorySearch::GetNextRow method.

HRESULT ExecuteSearch( 
  LPWSTR pszSearchFilter,
  LPWSTR* pAttributeNames,
  DWORD dwNumberAttributes,


[in] A search filter string in LDAP format, such as "(objectClass=user)".
[in] An array of attribute names for which data is requested. If NULL, all attributes are requested and dwNumberAttributes must be -1.
[in] The size of the pAttributeNames array. If -1, all attributes are requested and pAttributeNames must be NULL.
[out] The address of a method-allocated handle to the search context. The caller passes this handle to other methods of IDirectorySearch to examine the search result. If NULL, the search cannot be executed.

Return Values

This method returns the standard return values, as well as the following:

For more information and other return values, see ADSI Error Codes.

Return Code Description
S_OK The search was successfully executed.
E_ADS_BAD_PARAMETER The search handle is invalid.


When the search filter (pszSearchFilter) contains an attribute of ADS_UTC_TIME type, it value must be of the "yymmddhhmmssZ" format where "y", "m", "d", "h", "m" and "s" stand for year, month, day, hour, minute, and second, respectively. In this format, for example, "10:20:00 May 13th, 1999" becomes "990513102000Z". The final letter "Z" is the required syntax and indicated Zulu Time or Universal Coordinated Time.

The caller must call IDirectorySearch::CloseSearchHandle to release the memory allocated for the search handle and the result.

Example Code [C++]

The following C++ code example shows how to invoke IDirectorySearch::ExecuteSearch.

LPWSTR pszAttr[] = { L"ADsPath", L"Name", L"samAccountName" };
DWORD dwCount= sizeof(pszAttr)/sizeof(LPWSTR);
// Search for users with a last name that begins with "h".
hr = m_pSearch->ExecuteSearch(L"(&(objectClass=user)(sn=h*))", pszAttr, dwCount, &hSearch );


Client: Included in Windows XP and Windows 2000 Professional.
Server: Included in Windows Server 2003 and Windows 2000 Server.
Redistributable: Requires Active Directory Client Extension on Windows NT 4.0 SP6a and Windows 95/98/Me.
Header: Declared in Iads.h.

See Also

IDirectorySearch, IDirectorySearch::GetFirstRow, IDirectorySearch::GetNextRow, IDirectorySearch::CloseSearchHandle, IDirectorySearch::ExecuteSearch, ADSI Error Codes