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 (hr) 宏來判斷 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 |
程式庫 | Activeds.lib |
Dll | Activeds.dll;AdsLdpc.dll |