Função ADsGetLastError (adshlp.h)

A função ADsGetLastError recupera o valor do código de último erro do thread de chamada.

Sintaxe

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

Parâmetros

[out] lpError

Tipo: LPDWORD

Ponteiro para o local que recebe o código de erro.

[out] lpErrorBuf

Tipo: LPWSTR

Ponteiro para o local que recebe a cadeia de caracteres Unicode terminada em nulo que descreve o erro.

[in] dwErrorBufLen

Tipo: DWORD

Tamanho, em caracteres, do buffer lpErrorBuf . Se o buffer for muito pequeno para receber a cadeia de caracteres de erro, a cadeia de caracteres será truncada, mas ainda terminada em nulo. Um buffer, de pelo menos 256 bytes, é recomendado.

[out] lpNameBuf

Tipo: LPWSTR

Ponteiro para o local que recebe a cadeia de caracteres Unicode terminada em nulo que descreve o nome do provedor que gerou o erro.

[in] dwNameBufLen

Tipo: DWORD

Tamanho, em caracteres, do buffer lpNameBuf . Se o buffer for muito pequeno para receber o nome do provedor, a cadeia de caracteres será truncada, mas ainda terminada em nulo.

Retornar valor

Tipo: HRESULT

Esse método dá suporte a valores retornados padrão, bem como aos seguintes.

Comentários

Os erros adsi se enquadram em dois tipos de acordo com os valores de seu código de instalação. Os códigos de erro ADSI padrão têm um valor de código de instalação de 0x5 e os códigos de erro ADSI estendidos pressupõem que de FACILITY_WIN32. Os valores de erro dos códigos de erro ADSI padrão e estendidos são das formas 0x80005xxx e 0x8007xxxx, respectivamente. Use a macro HRESULT_FACILITY(hr) para determinar o tipo de erro ADSI.

Nota O provedor WinNT ADSI não dá suporte a ADsGetLastError.
 
O exemplo de código a seguir mostra como obter códigos de erro win32 e suas descrições usando 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);
        }
    }
}

Se hr for 80071392, o exemplo de código retornará o seguinte.

An error occurred.
    HRESULT: 80071392
    Error Code: 8305
    Error Text: 00002071: UpdErr: DSID-030502F1, problem 6005 (ENTRY_EXISTS), data 0
    Provider: LDAP Provider
Nota O provedor WinNT ADSI não dá suporte a ADsGetLastError.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho adshlp.h
Biblioteca Activeds.lib
DLL Activeds.dll; AdsLdpc.dll

Confira também

Códigos de erro ADSI

Funções ADSI

ADsSetLastError

Obter Último Erro