拡張エラー情報について
拡張エラー情報はレコードの配列であり、それぞれがシステムまたはアプリケーション内の特定のレイヤーを介してエラー コードを渡すことを示します。 マシン C でエラーが発生した場合、マシン B から呼び出され、マシン A から呼び出されると、マシン C の RPC ランタイムによってエラーを説明する 1 つ以上のレコードが生成され、マシン B に渡されます。マシン B は、既存のチェーンの先頭に 1 つ以上のレコードを追加できます。 と は、完全なチェーンを A に渡します。では、1 つ以上のレコードを追加し、情報を表示またはログに記録できます。 基本的に、拡張エラー チェーンはエラーの履歴を表します。
拡張エラー情報は、エラー コード (RPC_S_* 状態コード) に置き換わるものではありません。 拡張エラー情報の生成量や生成の有無に関係なく、エラー コードは変更されません。
各拡張エラー情報レコードには、次のものが含まれます。 詳細については、 RPC_EXTENDED_ERROR_INFO を参照してください。
ComputerName — これは、エラーが発生したコンピューターの非修飾 DNS 名です。 この情報を持つのは、コンピューターの境界上のレコードのみです。 たとえば、マシン A、B、C で前述したシナリオでは、ComputerName は次のフィールドに対して定義されています。
レコード ComputerName フィールド コンピューター C によって生成されたレコード #1 - コンピューター C によって生成されたレコード #2 - マシン C によって生成されたレコード #3 C マシン B によって生成されたレコード #1 - マシン B によって生成されたレコード #2 - マシン B によって生成されたレコード #3 B マシン A によって生成されたレコード #1 - マシン A によって生成されたレコード #2 - マシン A によって生成されたレコード #3 - チェーンの先頭
ProcessID - エラーを生成したプロセスのプロセス識別子。
TimeStamp — エラーが発生した時刻 (UTC 形式で表されます)。
生成コンポーネント: エラーを生成した論理コンポーネントの整数コード定義。 現在、次のコンポーネントが定義されています。
コード 名前 説明 1 Application 特定の RPC 呼び出しのマネージャー ルーチンを所有するコンポーネント 2 ランタイム RPC ランタイム 3 セキュリティ プロバイダー この呼び出しのセキュリティ プロバイダー。 4 NPFS NPFS ファイル システム 5 Rdr リダイレクター 6 Nmp 名前付きパイプ システム。 これは NPFS または RDR のいずれかになりますが、多くの場合、RPC ランタイムは、要求された操作を実行したユーザーを認識せず、そのような場合は NMP が返されます。 7 IO IO システムまたは IO システムによって使用されるドライバー。 これは、NPFS、RDR、または Winsock プロバイダーのいずれかです。 8 Winsock Winsock プロバイダー 9 Authz コード 承認 API。 10 Lpc ローカル プロシージャ コール機能。
- 状態 - レイヤーによって生成または返されるエラー コード
- DetectionLocation — エラーが検出されたコードの場所を識別する一意の番号。 このフィールドはコードに関連付けられており、バージョンからバージョンに変更されます。 最も一般的に検出される検出場所の別の一覧が公開されます。
- Flags — レコードに関する情報を指定するフラグ。 現在定義されているフラグは EEInfoPreviousRecordsMissing と EEInfoNextRecordsMissing で、それぞれ数値 1 と 2 に対応します。 EEInfoPreviousRecordsMissing が設定されている場合、そのレコードの前に 1 つ以上のレコードがありません。 EEInfoNextRecordsMissing が設定されている場合、そのレコードの後に 1 つ以上のレコードがありません。 レコードが見つからない理由の詳細については、「 拡張エラー情報の信頼性」を参照してください。
- 最大 4 つのエラー パラメーター。 error パラメーターは、エラーに関する追加情報を提供する軽量のバリアント構造です。 追加情報は、エラーと検出場所によって異なります。 パラメーターには、ANSI 文字列 (LPSTR)、Unicode 文字列 (LPWSTR)、長い値 (long)、短い値 (short)、ポインター (int64)、または none のいずれかを指定できます。