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 结尾的 Unicode 字符串的位置的指针。
[in] dwErrorBufLen
类型:DWORD
lpErrorBuf 缓冲区的大小(以字符为单位)。 如果缓冲区太小而无法接收错误字符串,字符串将被截断,但仍以 null 结尾。 建议使用至少 256 字节的缓冲区。
[out] lpNameBuf
类型: LPWSTR
指向接收以 null 结尾的 Unicode 字符串的位置的指针,该字符串描述引发错误的提供程序的名称。
[in] dwNameBufLen
类型:DWORD
lpNameBuf 缓冲区的大小(以字符为单位)。 如果缓冲区太小而无法接收提供程序的名称,字符串将被截断,但仍以 null 结尾。
返回值
类型: HRESULT
此方法支持标准返回值以及以下值。
注解
ADSI 错误根据其设施代码的值分为两种类型。 标准 ADSI 错误代码的设施代码值为 0x5,扩展的 ADSI 错误代码假定为 FACILITY_WIN32。 标准错误代码和扩展 ADSI 错误代码的错误值分别为 0x80005xxx 和 0x8007xxxx。 使用HRESULT_FACILITY (小时) 宏来确定 ADSI 错误类型。
注意 WinNT ADSI 提供程序不支持 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 |
标头 | adshlp.h |
Library | Activeds.lib |
DLL | Activeds.dll;AdsLdpc.dll |