Compartir a través de


función ldap_search_ext_s (winldap.h)

La función ldap_search_ext_s busca sincrónicamente el directorio LDAP y devuelve un conjunto solicitado de atributos para cada entrada coincidente.

Sintaxis

WINLDAPAPI ULONG LDAPAPI ldap_search_ext_s(
  [in]  LDAP          *ld,
  [in]  PSTR          base,
  [in]  ULONG         scope,
  [in]  PSTR          filter,
  [in]  PZPSTR        attrs,
  [in]  ULONG         attrsonly,
  [in]  PLDAPControlA *ServerControls,
  [in]  PLDAPControlA *ClientControls,
  [in]  l_timeval     *timeout,
  [in]  ULONG         SizeLimit,
  [out] PLDAPMessage  *res
);

Parámetros

[in] ld

Identificador de sesión.

[in] base

Puntero a una cadena terminada en null que contiene el nombre distintivo de la entrada en la que se va a iniciar la búsqueda.

[in] scope

Especifica uno de los valores siguientes para indicar el ámbito de búsqueda.

LDAP_SCOPE_BASE

Busque solo la entrada base.

LDAP_SCOPE_ONELEVEL

Busque todas las entradas del primer nivel por debajo de la entrada base, excepto la entrada base.

LDAP_SCOPE_SUBTREE

Busque la entrada base y todas las entradas del árbol debajo de la base.

[in] filter

Puntero a una cadena terminada en null que especifica el filtro de búsqueda. Para obtener más información, vea Sintaxis de filtro de búsqueda.

[in] attrs

Matriz terminada en null de punteros a cadenas terminadas en null que indican qué atributos se van a devolver para cada entrada coincidente. Pase NULL para recuperar todos los atributos disponibles.

[in] attrsonly

Valor booleano que debe ser cero si se van a devolver los tipos de atributo y los valores, distinto de cero si solo se requieren tipos.

[in] ServerControls

Lista de controles de servidor LDAP.

[in] ClientControls

Una lista de controles de cliente.

[in] timeout

Especifica el valor de tiempo de espera de búsqueda local, en segundos, y el límite de tiempo de operación que se envía al servidor dentro de la solicitud de búsqueda.

[in] SizeLimit

Límite en el número de entradas que se van a devolver de la búsqueda. Un valor de cero indica que no hay límite.

[out] res

Contiene los resultados de la búsqueda tras la finalización de la llamada. También puede contener resultados parciales o datos extendidos cuando se produce un error en la llamada de función con un código de error. Resultados devueltos gratis con una llamada a ldap_msgfree cuando la aplicación ya no lo requiera.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es LDAP_SUCCESS.

Si se produce un error en la función, devuelve un código de error, pero ldap_search_ext_s puede producir un error y seguir asignando pMsg. Por ejemplo, tanto LDAP_PARTIAL_RESULTS comoLDAP_REFERRAL código de error asignarán pMsg. Para obtener más información, vea el ejemplo de código siguiente. Para obtener más información, vea Valores devueltos.

Comentarios

La función ldap_search_ext_s inicia una operación de búsqueda sincrónica. Los parámetros y efectos de ldap_search_ext_s incluyen los de ldap_search_s. La rutina extendida incluye parámetros adicionales para admitir controles de cliente y servidor, y para especificar límites de tamaño y tiempo para cada operación de búsqueda.

Use la función ldap_set_option con el identificador de sesión ld para establecer la opción LDAP_OPT_DEREF que determine cómo se realiza la búsqueda. Para obtener más información, vea Opciones de sesión. Otras dos opciones de búsqueda, LDAP_OPT_SIZELIMIT y LDAP_OPT_TIMELIMIT, se omiten en favor de los parámetros de opción SizeLimit y TimeLimit de esta función.

Tras la finalización de la operación de búsqueda, ldap_search_ext_s vuelve al autor de la llamada. Use ldap_search_ext para que la operación se realice de forma asincrónica.

Multithreading: las llamadas a ldap_search_ext_s son seguras para subprocesos.

En el ejemplo de código siguiente se muestra cómo liberar pMsg en caso de que se produzca un error en ldap_search_ext_s .

// 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);

}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado winldap.h
Library Wldap32.lib
Archivo DLL Wldap32.dll

Consulte también

Controles extendidos

Funciones

LDAP

Valores devueltos

Opciones de sesión

Uso de controles

ldap_msgfree

ldap_search

ldap_search_ext

ldap_search_s

ldap_search_st