Поделиться через


функция ldap_search_st (winldap.h)

Функция ldap_search_st синхронно выполняет поиск в каталоге LDAP и возвращает запрошенный набор атрибутов для каждой совпадаемой записи. Дополнительный параметр задает локальное время ожидания для поиска. Функция идентична ldap_search_s, за исключением дополнительного параметра локального времени ожидания.

Синтаксис

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

Параметры

[in] ld

Дескриптор сеанса.

[in] base

Указатель на строку, завершающуюся null, которая содержит различающееся имя записи, с которой начинается поиск.

[in] scope

Указывает одно из следующих значений для указания область поиска.

LDAP_SCOPE_BASE

Поиск только в базовой записи.

LDAP_SCOPE_ONELEVEL

Выполните поиск всех записей на первом уровне под базовой записью, за исключением базовой записи.

LDAP_SCOPE_SUBTREE

Выполните поиск базовой записи и всех записей в дереве под основанием.

[in] filter

Указатель на строку, завершающуюся значением NULL, которая указывает фильтр поиска. Дополнительные сведения см. в разделе Синтаксис фильтра поиска.

[in] attrs

Массив строк с завершением NULL, указывающих, какие атрибуты следует возвращать для каждой совпадающей записи. Передайте значение NULL , чтобы получить все доступные атрибуты.

[in] attrsonly

Логическое значение, которое должно быть равно нулю, если возвращаются как типы атрибутов, так и значения, ненулевое, если требуются только типы.

[in] timeout

Значение времени ожидания локального поиска в секундах.

[out] res

Содержит результаты поиска после завершения вызова . Может также содержать частичные результаты или расширенные данные при сбое вызова функции с кодом ошибки. Все возвращаемые результаты должны быть освобождены с помощью вызова ldap_msgfree , если приложение больше не требуется.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет LDAP_SUCCESS.

Если функция завершается сбоем, она возвращает код ошибки, однако ldap_search_st может завершиться ошибкой и по-прежнему может выделить pMsg. Например, LDAP_PARTIAL_RESULTS и LDAP_REFERRAL код ошибки выделяют pMsg. Дополнительные сведения см. в следующем примере кода. Дополнительные сведения см. в разделе Возвращаемые значения.

Комментарии

Функция ldap_search_st инициирует синхронную операцию поиска.

Используйте функцию ldap_set_option с дескриптором сеанса ld , чтобы задать параметры LDAP_OPT_SIZELIMIT и LDAP_OPT_DEREF , определяющие способ выполнения поиска. Дополнительные сведения см. в разделе Параметры сеанса. Параметр времени ожидания в ldap_search_st переопределяет LDAP_OPT_TIMELIMIT.

После завершения операции поиска ldap_search_st возвращается вызывающей объекту. Используйте ldap_search или ldap_search_ext для асинхронного выполнения операции.

Многопоточность. Вызовы ldap_search_st потокобезопасны.

В следующем примере кода показано, как освободить pMsg в случае сбоя ldap_search_st .

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

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

    // Be aware that pMsg can contain valid data, even if the
    // call to ldap_search_st 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 complete.
    if (pMsg != NULL) ldap_msgfree(pMsg);
}

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header winldap.h
Библиотека Wldap32.lib
DLL Wldap32.dll

См. также

Функции

LDAP

Возвращаемые значения

Параметры сеанса

ldap_msgfree

ldap_search

ldap_search_ext

ldap_search_ext_s

ldap_search_s