Export (0) Print
Expand All
Expand Minimize

ldap_search_ext_s function

The ldap_search_ext_s function synchronously searches the LDAP directory and returns a requested set of attributes for each matched entry.

Syntax


ULONG ldap_search_ext_s(
  _In_   LDAP *ld,
  _In_   PCHAR base,
  _In_   ULONG scope,
  _In_   PCHAR filter,
  _In_   PCHAR attrs[],
  _In_   ULONG attrsonly,
  _In_   PLDAPControl *ServerControls,
  _In_   PLDAPControl *ClientControls,
  _In_   struct l_timeval *timeout,
  _In_   ULONG SizeLimit,
  _Out_  LDAPMessage **res
);

Parameters

ld [in]

Session handle.

base [in]

Pointer to a null-terminated string that contains the distinguished name of the entry at which to start the search.

scope [in]

Specifies one of the following values to indicate the search scope.

ValueMeaning
LDAP_SCOPE_BASE

Search the base entry only.

LDAP_SCOPE_ONELEVEL

Search all entries in the first level below the base entry, excluding the base entry.

LDAP_SCOPE_SUBTREE

Search the base entry and all entries in the tree below the base.

 

filter [in]

Pointer to a null-terminated string that specifies the search filter. For more information, see Search Filter Syntax.

attrs [in]

A null-terminated array of pointers to null-terminated strings indicating which attributes to return for each matching entry. Pass NULL to retrieve all available attributes.

attrsonly [in]

Boolean value that should be zero if both attribute types and values are to be returned, nonzero if only types are required.

ServerControls [in]

A list of LDAP server controls.

ClientControls [in]

A list of client controls.

timeout [in]

Specifies both the local search time-out value, in seconds, and the operation time limit that is sent to the server within the search request.

SizeLimit [in]

A limit on the number of entries to return from the search. A value of zero indicates no limit.

res [out]

Contains the results of the search upon completion of the call. Can also contain partial results or extended data when the function call fails with an error code. Free returned results with a call to ldap_msgfree when no longer required by the application.

Return value

If the function succeeds, the return value is LDAP_SUCCESS.

If the function fails, it returns an error code, however ldap_search_ext_s can fail and can still allocate pMsg. For example, both LDAP_PARTIAL_RESULTS and LDAP_REFERRAL error code will allocate pMsg. For more information, see the following code example. For more information, see Return Values.

Remarks

The ldap_search_ext_s function initiates a synchronous search operation. The parameters and effects of ldap_search_ext_s include those of ldap_search_s. The extended routine includes additional parameters to support client and server controls, and to specify size and time limits for each search operation.

Use the ldap_set_option function with the ld session handle to set the LDAP_OPT_DEREF option that determine how the search is performed. For more information, see Session Options. Two other search options, LDAP_OPT_SIZELIMIT and LDAP_OPT_TIMELIMIT, are ignored in favor of the SizeLimit and TimeLimit option parameters in this function.

Upon completion of the search operation, ldap_search_ext_s returns to the caller. Use ldap_search_ext to have the operation performed asynchronously.

Multithreading: Calls to ldap_search_ext_s are thread-safe.

The following code example shows how to free pMsg in the event that ldap_search_ext_s fails.


// Initialize return value to NULL.
LDAPMessage *pMsg = NULL;

// Perform the search request.
dwErr = ldap_search_ext_s (i_pldap,
        i_lpszBase,
        i_ulScope,
        i_lpszSearchFilter,
        lpszAttributes,
        0,
        pServerControls,
        pClientControls,
        lpsTimeout,
        0,
        &pMsg
        );

// Cleanup calling parameters.
if (lpszAttributes != NULL)
    delete [] lpszAttributes;

// Convert error code and cleanup pMsg if necessary.
if (dwErr != LDAP_SUCCESS)
{
    DebugOutLDAPError(i_pldap, dwErr, _T("ldap_search_ext_s"));
    hr = HRESULT_FROM_WIN32(dwErr);

    // Be aware that pMsg can contain valid data, even if
    // the call to ldap_search_ext_s returned an error code.
    // This can be caused by the server returning codes
    // such as LDAP_RESULTS_TOO_LARGE or other codes
    // that indicate that the search returned partial
    // results. The user code can handle these cases
    // if required, this example frees pMsg on any 
    // error code.

    if (pMsg != NULL) ldap_msgfree(pMsg);
}

else
{
    // Process the search results.
    ...
    // Free the results when complete.
    if (pMsg != NULL) ldap_msgfree(pMsg);

}

Requirements

Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]

Header

Winldap.h

Library

Wldap32.lib

DLL

Wldap32.dll

Unicode and ANSI names

ldap_search_ext_sW (Unicode) and ldap_search_ext_sA (ANSI)

See also

Extended Controls
Using Controls
Functions
LDAP
ldap_msgfree
ldap_search
ldap_search_s
ldap_search_st
ldap_search_ext
Return Values
Session Options

 

 

Show:
© 2014 Microsoft