Share via


Función ADsGetLastError (adshlp.h)

La función ADsGetLastError recupera el valor de código de último error del subproceso que llama.

Sintaxis

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

Parámetros

[out] lpError

Tipo: LPDWORD

Puntero a la ubicación que recibe el código de error.

[out] lpErrorBuf

Tipo: LPWSTR

Puntero a la ubicación que recibe la cadena Unicode terminada en null que describe el error.

[in] dwErrorBufLen

Tipo: DWORD

Tamaño, en caracteres, del búfer lpErrorBuf . Si el búfer es demasiado pequeño para recibir la cadena de error, la cadena se trunca, pero sigue terminada en null. Se recomienda un búfer, de al menos 256 bytes.

[out] lpNameBuf

Tipo: LPWSTR

Puntero a la ubicación que recibe la cadena Unicode terminada en null que describe el nombre del proveedor que generó el error.

[in] dwNameBufLen

Tipo: DWORD

Tamaño, en caracteres, del búfer lpNameBuf . Si el búfer es demasiado pequeño para recibir el nombre del proveedor, la cadena se trunca, pero sigue terminada en null.

Valor devuelto

Tipo: HRESULT

Este método admite valores devueltos estándar, así como los siguientes.

Comentarios

Los errores adsi se dividen en dos tipos según los valores de su código de instalación. Los códigos de error ADSI estándar tienen un valor de código de instalación de 0x5 y los códigos de error ADSI extendidos asumen que de FACILITY_WIN32. Los valores de error de los códigos de error ADSI estándar y extendidos son de las formas 0x80005xxx y 0x8007xxxx, respectivamente. Use la macro HRESULT_FACILITY(hr) para determinar el tipo de error ADSI.

Nota El proveedor ADSI de WinNT no admite ADsGetLastError.
 
En el ejemplo de código siguiente se muestra cómo obtener códigos de error de Win32 y sus descripciones mediante 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 es 80071392, el ejemplo de código devuelve lo siguiente.

An error occurred.
    HRESULT: 80071392
    Error Code: 8305
    Error Text: 00002071: UpdErr: DSID-030502F1, problem 6005 (ENTRY_EXISTS), data 0
    Provider: LDAP Provider
Nota El proveedor ADSI de WinNT no admite ADsGetLastError.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado adshlp.h
Library Activeds.lib
Archivo DLL Activeds.dll; AdsLdpc.dll

Consulte también

Códigos de error adsi

Funciones ADSI

ADsSetLastError

Obtener último error