| Platform SDK: Active Directory, ADSI, and Directory Services |
The ADsGetLastError function retrieves the calling thread's last-error code value. This function behaves in the same way as the Win32 function GetLastError.
HRESULT ADsGetLastError( LPDWORD lpError, LPWSTR lpErrorBuf, DWORD dwErrorBufLen, LPWSTR lpNameBuf, DWORD dwNameBufLen );
This method supports the standard return values, as well as the following:
ADSI errors fall into two types according to the values of their facility code. The standard ADSI error codes have a facility code value of 0x5 and the extended ADSI error codes assume that of FACILITY_WIN32. The error values of the standard and extended ADSI error codes are of the forms of 0x80005xxx and 0x8007xxxx, respectively. Use the HRESULT_FACILITY(hr) macro to determine the type of ADSI errors you are dealing with.
The following code snippet shows how to get Win32 error codes and their descriptions using 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-1,
szNameBuf,
MAX_PATH-1);
if (SUCCEEDED(hr_return))
{
wprintf(L"Error Code: %d\n Error Text: %ws\n Provider: %ws\n", dwLastError, szErrorBuf, szNameBuf);
}
}
}
If hr is 80071392, the sample code produces the following output.
Error creating container object.
HRESULT: 80071392
Error Code: 8305
Error Text: 00002071: UpdErr: DSID-030502F1, problem 6005 (ENTRY_EXISTS), data 0
Provider: LDAP Provider
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with DSClient).
Windows 95/98: Requires Windows 95 or later (with DSClient).
Header: Declared in Adshlp.h.
Library: Included as a resource in ActiveDs.dll.
ADSI Error Codes, ADSI Functions, ADsSetLastError, GetLastError