Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La funzione ldap_search_ext_s esegue una ricerca sincrona nella directory LDAP e restituisce un set di attributi richiesto per ogni voce corrispondente.
Sintassi
WINLDAPAPI ULONG LDAPAPI ldap_search_ext_sW(
[in] LDAP *ld,
[in] const PWSTR base,
[in] ULONG scope,
[in] const PWSTR filter,
[in] PZPWSTR attrs,
[in] ULONG attrsonly,
[in] PLDAPControlW *ServerControls,
[in] PLDAPControlW *ClientControls,
[in] l_timeval *timeout,
[in] ULONG SizeLimit,
[out] PLDAPMessage *res
);
Parametri
[in] ld
Handle di sessione.
[in] base
Puntatore a una stringa con terminazione Null contenente il nome distinto della voce in corrispondenza della quale avviare la ricerca.
[in] scope
Specifica uno dei valori seguenti per indicare l'ambito di ricerca.
LDAP_SCOPE_BASE
Cercare solo la voce di base.
LDAP_SCOPE_ONELEVEL
Cercare tutte le voci nel primo livello sotto la voce di base, escludendo la voce di base.
LDAP_SCOPE_SUBTREE
Cercare la voce di base e tutte le voci nell'albero sotto la base.
[in] filter
Puntatore a una stringa con terminazione Null che specifica il filtro di ricerca. Per altre informazioni, vedere sintassi del filtro di ricerca.
[in] attrs
Matrice con terminazione Null di puntatori a stringhe con terminazione Null che indica quali attributi restituire per ogni voce corrispondente. Passare NULL per recuperare tutti gli attributi disponibili.
[in] attrsonly
Valore booleano che deve essere zero se devono essere restituiti entrambi i tipi di attributo e i valori, diverso da zero se sono necessari solo i tipi.
[in] ServerControls
Elenco di controlli server LDAP.
[in] ClientControls
Elenco di controlli client.
[in] timeout
Specifica sia il valore di timeout della ricerca locale, in secondi, sia il limite di tempo dell'operazione inviato al server all'interno della richiesta di ricerca.
[in] SizeLimit
Limite al numero di voci da restituire dalla ricerca. Un valore pari a zero indica che non è previsto alcun limite.
[out] res
Contiene i risultati della ricerca al completamento della chiamata. Può anche contenere risultati parziali o dati estesi quando la chiamata di funzione ha esito negativo con un codice di errore. Risultati restituiti gratuiti con una chiamata a ldap_msgfree quando non sono più richiesti dall'applicazione.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è LDAP_SUCCESS.
Se la funzione ha esito negativo, restituisce un codice di errore, tuttavia ldap_search_ext_s può avere esito negativo e può comunque allocare . Ad esempio, sia LDAP_PARTIAL_RESULTS che LDAP_REFERRAL codice di errore allocherà pMsg. Per altre informazioni, vedere l'esempio di codice seguente. Per altre informazioni, vedere valori restituiti.
Osservazioni
La funzione ldap_search_ext_s avvia un'operazione di ricerca sincrona. I parametri e gli effetti di ldap_search_ext_s includono quelli di ldap_search_s. La routine estesa include parametri aggiuntivi per supportare i controlli client e server e per specificare le dimensioni e i limiti di tempo per ogni operazione di ricerca.
Usare la funzione ldap_set_option con l'handle di sessione ld per impostare l'opzione di LDAP_OPT_DEREF che determina la modalità di esecuzione della ricerca. Per altre informazioni, vedere opzioni di sessione . Due altre opzioni di ricerca, LDAP_OPT_SIZELIMIT e LDAP_OPT_TIMELIMIT, vengono ignorate a favore del SizeLimit e parametri di opzione TimeLimit in questa funzione.
Al termine dell'operazione di ricerca, ldap_search_ext_s torna al chiamante. Usare ldap_search_ext per eseguire l'operazione in modo asincrono.
Multithreading: le chiamate a ldap_search_ext_s sono thread-safe.
Nell'esempio di codice seguente viene illustrato come liberare pMsg nel caso in cui ldap_search_ext_s non riesca.
// 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);
}
Nota
L'intestazione winldap.h definisce ldap_search_ext_s come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
| Requisito | Valore |
|---|---|
| client minimo supportato | Windows Vista |
| server minimo supportato | Windows Server 2008 |
| piattaforma di destinazione | Finestre |
| intestazione |
winldap.h |
| libreria |
Wldap32.lib |
| dll | Wldap32.dll |