Функция 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.
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
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
минимальный поддерживаемый сервер | Windows Server 2008 |
целевая платформа | Виндоус |
заголовка | adshlp.h |
библиотеки | Activeds.lib |
DLL | Activeds.dll; AdsLdpc.dll |
См. также
Коды ошибок ADSI