Функция 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.
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
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | adshlp.h |
Библиотека | Activeds.lib |
DLL | Activeds.dll; AdsLdpc.dll |