次の方法で共有


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 エラーは、機能コードの値に応じて 2 種類に分類されます。 標準の ADSI エラー・コードの機能コード値は0x5で、拡張 ADSI エラー・コードはFACILITY_WIN32と見なされます。 標準および拡張 ADSI エラー コードのエラー値は、それぞれ 0x80005xxx と 0x8007xxxx の形式です。 HRESULT_FACILITY(hr) マクロを使用して、ADSI エラーの種類を確認します。

メモ WinNT ADSI プロバイダーは 、ADsGetLastError をサポートしていません。
 
次のコード例は、 ADsGetLastError を使用して Win32 エラー コードとその説明を取得する方法を示しています。
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

こちらもご覧ください

ADSI エラー コード

ADSI 関数

ADsSetLastError

GetLastError