Fonction ADsGetLastError (adshlp.h)

La fonction ADsGetLastError récupère la valeur de code de dernière erreur du thread appelant.

Syntaxe

HRESULT ADsGetLastError(
  [out] LPDWORD lpError,
  [out] LPWSTR  lpErrorBuf,
  [in]  DWORD   dwErrorBufLen,
  [out] LPWSTR  lpNameBuf,
  [in]  DWORD   dwNameBufLen
);

Paramètres

[out] lpError

Type : LPDWORD

Pointeur vers l’emplacement qui reçoit le code d’erreur.

[out] lpErrorBuf

Type : LPWSTR

Pointeur vers l’emplacement qui reçoit la chaîne Unicode terminée par null qui décrit l’erreur.

[in] dwErrorBufLen

Type : DWORD

Taille, en caractères, de la mémoire tampon lpErrorBuf . Si la mémoire tampon est trop petite pour recevoir la chaîne d’erreur, la chaîne est tronquée, mais toujours terminée par la valeur Null. Une mémoire tampon d’au moins 256 octets est recommandée.

[out] lpNameBuf

Type : LPWSTR

Pointeur vers l’emplacement qui reçoit la chaîne Unicode terminée par null qui décrit le nom du fournisseur qui a déclenché l’erreur.

[in] dwNameBufLen

Type : DWORD

Taille, en caractères, de la mémoire tampon lpNameBuf . Si la mémoire tampon est trop petite pour recevoir le nom du fournisseur, la chaîne est tronquée, mais toujours terminée par la valeur Null.

Valeur retournée

Type : HRESULT

Cette méthode prend en charge les valeurs de retour standard, ainsi que les éléments suivants.

Remarques

Les erreurs ADSI se divisent en deux types en fonction des valeurs de leur code d’installation. Les codes d’erreur ADSI standard ont une valeur de code d’installation de 0x5 et les codes d’erreur ADSI étendus supposent que de FACILITY_WIN32. Les valeurs d’erreur des codes d’erreur ADSI standard et étendu sont de la forme 0x80005xxx et 0x8007xxxx, respectivement. Utilisez la macro HRESULT_FACILITY(hr) pour déterminer le type d’erreur ADSI.

Note Le fournisseur WINNT ADSI ne prend pas en charge ADsGetLastError.
 
L’exemple de code suivant montre comment obtenir des codes d’erreur Win32 et leurs descriptions à l’aide d’ADsGetLastError.
if (FAILED(hr))
{
    wprintf(L"An error occurred.\n  HRESULT: %x\n",hr);
    // If facility is Win32, get the Win32 error 
    if (HRESULT_FACILITY(hr)==FACILITY_WIN32)
    {
        DWORD dwLastError;
        WCHAR szErrorBuf[MAX_PATH];
        WCHAR szNameBuf[MAX_PATH];
        // Get extended error value.
        HRESULT hr_return =S_OK;
        hr_return = ADsGetLastError( &dwLastError,
                                       szErrorBuf,
                                       MAX_PATH,
                                       szNameBuf,
                                       MAX_PATH);
        if (SUCCEEDED(hr_return))
        {
             wprintf(L"Error Code: %d\n Error Text: %ws\n Provider: %ws\n", dwLastError, szErrorBuf, szNameBuf);
        }
    }
}

Si hr est 80071392, l’exemple de code retourne ce qui suit.

An error occurred.
    HRESULT: 80071392
    Error Code: 8305
    Error Text: 00002071: UpdErr: DSID-030502F1, problem 6005 (ENTRY_EXISTS), data 0
    Provider: LDAP Provider
Note Le fournisseur WINNT ADSI ne prend pas en charge ADsGetLastError.
 

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 adshlp.h
Bibliothèque Activeds.lib
DLL Activeds.dll ; AdsLdpc.dll

Voir aussi

Codes d’erreur ADSI

Fonctions ADSI

ADsSetLastError

Obtenir la dernière erreur