Функция ADsGetLastError (adshlp.h)

Функция ADsGetLastError извлекает значение кода последней ошибки вызывающего потока.

Синтаксис

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

Параметры

[out] lpError

Тип: LPDWORD

Указатель на расположение, которое получает код ошибки.

[out] lpErrorBuf

Тип: LPWSTR

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

[in] dwErrorBufLen

Тип: DWORD

Размер буфера lpErrorBuf (в символах). Если буфер слишком мал для получения строки ошибки, строка усекается, но по-прежнему заканчивается значением NULL. Рекомендуется использовать буфер размером не менее 256 байт.

[out] lpNameBuf

Тип: LPWSTR

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

[in] dwNameBufLen

Тип: DWORD

Размер буфера lpNameBuf (в символах). Если буфер слишком мал для получения имени поставщика, строка усекается, но по-прежнему заканчивается значением NULL.

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

Тип: HRESULT

Этот метод поддерживает стандартные возвращаемые значения, а также следующие.

Комментарии

Ошибки ADSI делятся на два типа в соответствии со значениями кода объекта. Стандартные коды ошибок ADSI имеют значение кода объекта 0x5 а расширенные коды ошибок ADSI предполагают, что FACILITY_WIN32. Значения ошибок стандартных и расширенных кодов ошибок ADSI имеют форматы 0x80005xx и 0x8007xxx соответственно. Используйте макрос HRESULT_FACILITY(hr) для определения типа ошибки ADSI.

Примечание Поставщик WINNT ADSI не поддерживает ADsGetLastError.
 
В следующем примере кода показано, как получить коды ошибок Win32 и их описания с помощью 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);
        }
    }
}

Если параметр hr имеет значение 80071392, в примере кода возвращается следующее.

An error occurred.
    HRESULT: 80071392
    Error Code: 8305
    Error Text: 00002071: UpdErr: DSID-030502F1, problem 6005 (ENTRY_EXISTS), data 0
    Provider: LDAP Provider
Примечание Поставщик WINNT ADSI не поддерживает ADsGetLastError.
 

Требования

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

См. также раздел

Коды ошибок ADSI

Функции ADSI

ADsSetLastError

Getlasterror