Поделиться через


Функция 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

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

[in] dwNameBufLen

Тип: DWORD

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

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

Тип: HRESULT

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

Замечания

Ошибки ADSI делятся на два типа в соответствии со значениями кода объекта. Стандартные коды ошибок ADSI имеют значение кода объекта 0x5, а расширенные коды ошибок ADSI предполагают, что FACILITY_WIN32. Значения ошибок стандартного и расширенного кодов ошибок ADSI относятся к формам 0x80005xxx и 0x8007x соответственно. Используйте макрос 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);
        }
    }
}

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

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
целевая платформа Виндоус
заголовка adshlp.h
библиотеки Activeds.lib
DLL Activeds.dll; AdsLdpc.dll

См. также

Коды ошибок ADSI

функции ADSI

ADsSetLastError

GetLastError