ldap_search_s, fonction (winldap.h)

La fonction ldap_search_s recherche de manière synchrone dans le répertoire LDAP et retourne un ensemble d’attributs demandé pour chaque entrée mise en correspondance.

Syntaxe

WINLDAPAPI ULONG LDAPAPI ldap_search_s(
  [in]  LDAP         *ld,
  [in]  PSTR         base,
  [in]  ULONG        scope,
  [in]  PSTR         filter,
  [in]  PZPSTR       attrs,
  [in]  ULONG        attrsonly,
  [out] PLDAPMessage *res
);

Paramètres

[in] ld

Handle de session.

[in] base

Pointeur vers une chaîne terminée par un caractère Null qui contient le nom unique de l’entrée à partir de laquelle commencer la recherche.

[in] scope

Spécifie l’une des valeurs suivantes pour indiquer l’étendue de recherche.

LDAP_SCOPE_BASE

Recherchez l’entrée de base uniquement.

LDAP_SCOPE_ONELEVEL

Recherchez toutes les entrées du premier niveau sous l’entrée de base, à l’exception de l’entrée de base.

LDAP_SCOPE_SUBTREE

Recherchez l’entrée de base et toutes les entrées de l’arborescence sous la base.

[in] filter

Pointeur vers une chaîne terminée par null qui spécifie le filtre de recherche. Pour plus d’informations, consultez Syntaxe des filtres de recherche.

[in] attrs

Tableau de chaînes terminées par null indiquant les attributs à retourner pour chaque entrée correspondante. Passez null pour récupérer tous les attributs disponibles.

[in] attrsonly

Valeur booléenne qui doit être égale à zéro si les types d’attributs et les valeurs doivent être retournés, différente de zéro si seuls les types sont requis.

[out] res

Contient les résultats de la recherche à la fin de l’appel. Peut également contenir des résultats partiels ou des données étendues lorsque l’appel de fonction échoue avec un code d’erreur. Les résultats gratuits retournés avec un appel à ldap_msgfree lorsqu’ils ne sont plus requis par l’application.

Valeur retournée

Si la fonction réussit, la valeur de retour est LDAP_SUCCESS.

Si la fonction échoue, elle retourne un code d’erreur, mais ldap_search_s peut échouer et peut toujours allouer pMsg. Par exemple, LDAP_PARTIAL_RESULTS et LDAP_REFERRAL code d’erreur allouent pMsg. Pour plus d’informations, consultez l’exemple de code suivant. Pour plus d’informations, consultez Valeurs de retour.

Remarques

La fonction ldap_search_s lance une recherche synchrone.

Utilisez la fonction ldap_set_option avec le handle de session ld pour définir les options LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT et LDAP_OPT_DEREF qui déterminent la façon dont la recherche est effectuée. Pour plus d’informations, consultez Options de session.

Une fois l’opération de recherche terminée, ldap_search_s retourne à l’appelant. Utilisez ldap_search pour effectuer l’opération de manière asynchrone.

Multithreading : les appels à ldap_search_s sont thread-safe.

L’exemple de code suivant montre comment libérer pMsg en cas d’échec de ldap_search_s .

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

// Perform the search request.
dwErr = ldap_search_s (i_pldap,
        i_lpszBase,
        i_ulScope,
        i_lpszSearchFilter,
        lpszAttributes,
        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_s"));
    hr = HRESULT_FROM_WIN32(dwErr);

    // Be aware that pMsg can contain valid data, even if the
    // call to ldap_search_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 just frees pMsg on any 
    // error code.

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

else
{
    // Process the search results.
    ...
    // Free the results when no longer required.
    if (pMsg != NULL) ldap_msgfree(pMsg);
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête winldap.h
Bibliothèque Wldap32.lib
DLL Wldap32.dll

Voir aussi

Fonctions

LDAP

Valeurs retournées

Session Options

ldap_msgfree

ldap_search

ldap_search_ext

ldap_search_ext_s

ldap_search_st