STOWED_EXCEPTION_INFORMATION_V2構造体

格納された例外情報が含まれます。

構文

typedef struct _STOWED_EXCEPTION_INFORMATION_V2 {
  STOWED_EXCEPTION_INFORMATION_HEADER Header;
  HRESULT                             ResultCode;
  struct {
    DWORD ExceptionForm  :2;
    DWORD ThreadId  :30;
  };
  union {
    struct {
      PVOID ExceptionAddress;
      ULONG StackTraceWordSize;
      ULONG StackTraceWords;
      PVOID StackTrace;
    };
    struct {
      PWSTR ErrorText;
    };
  };
  ULONG                               NestedExceptionType;
  PVOID                               NestedException;
} STOWED_EXCEPTION_INFORMATION_V2, *PSTOWED_EXCEPTION_INFORMATION_V2;

メンバー

Header

種類: STOWED_EXCEPTION_INFORMATION_HEADER

この親構造体の情報を含む STOWED_EXCEPTION_INFORMATION_HEADER 構造体。

ResultCode

型: HRESULT

格納された例外の HRESULT コード。

ExceptionForm

型: DWORD

例外の形式を識別する 2 ビット値。

説明
STOWED_EXCEPTION_FORM_BINARY
0x01
この値は、例外の形式がバイナリであることを示します。
STOWED_EXCEPTION_FORM_TEXT
0x02
この値は、例外の形式がテキストであることを示します。

ThreadId

型: DWORD

例外を発生させたスレッドを識別する 30 ビット値。 値は、格納時に 2 ビットずつ右にシフトされます。 有効なスレッド ID に戻すには、値を 2 ずつ左にシフトします。 次に例を示します。

DWORD ActualThreadId = (StowedException.ThreadId << 2);

(名前のない構造体)

この入れ子になった構造体のメンバーは、 ExceptionForm メンバーが STOWED_EXCEPTION_FORM_BINARY に設定されている場合にのみ有効です。

ExceptionAddress

種類: PVOID

例外アドレスを含むポインター。

StackTraceWordSize

種類: ULONG

StackTrace メンバーが指すスタック トレース内の各単語のサイズ (バイト単位)。 この値は、32 ビット プラットフォームの場合は 4、64 ビット プラットフォームの場合は 8 に設定されます。

StackTraceWords

種類: ULONG

StackTrace メンバーが指すスタック トレース内の単語数。 単語の数は、配列内の要素の数と等しくなります。

StackTrace

種類: PVOID

スタック トレースを含むメモリ ブロックへのポインター。

(名前のない構造体)

この入れ子になった構造体のメンバーは、 ExceptionForm メンバーが STOWED_EXCEPTION_FORM_TEXT に設定されている場合にのみ有効です。

ErrorText

種類: PWSTR

例外のエラー テキストを含む null で終わる文字列へのポインター。

NestedExceptionType

種類: ULONG

NestedException メンバーが指すオブジェクトの種類を指定する 32 ビット値。 次のバイト スワップ型定義マクロを使用して、リトル エンディアンを前提とする値を定義します。

#define STOWED_EXCEPTION_NESTED_TYPE(t) ((((((ULONG)(t)) >> 24) & 0xFF) <<  0) | \
                                         (((((ULONG)(t)) >> 16) & 0xFF) <<  8) | \
                                         (((((ULONG)(t)) >>  8) & 0xFF) << 16) | \
                                         (((((ULONG)(t)) >>  0) & 0xFF) << 24))

一般的な型定義を次に示します。

説明
STOWED_EXCEPTION_NESTED_TYPE_NONE
(0x00000000)
この値は、入れ子になった例外オブジェクトがないことを指定します。
STOWED_EXCEPTION_NESTED_TYPE_WIN32
STOWED_EXCEPTION_NESTED_TYPE('W32E')
この値は、 NestedException メンバーがEXCEPTION_RECORD オブジェクトを指していることを指定します。
STOWED_EXCEPTION_NESTED_TYPE_STOWED
STOWED_EXCEPTION_NESTED_TYPE('STOW')
この値は、 NestedException メンバーが別の格納された例外オブジェクトを指していることを指定します。 もう 1 つの格納された例外オブジェクトには、STOWED_EXCEPTION_INFORMATION_V2 オブジェクト、または有効な Header メンバーを持つ別のバージョン、つまり有効なSTOWED_EXCEPTION_INFORMATION_HEADERを含む Header メンバーを指定できます。
STOWED_EXCEPTION_NESTED_TYPE_CLR
STOWED_EXCEPTION_NESTED_TYPE('CLR1')
この値は、 NestedException メンバーが 'CLR1' 例外オブジェクトを指していることを指定します。
STOWED_EXCEPTION_NESTED_TYPE_LEO
STOWED_EXCEPTION_NESTED_TYPE('LEO1')
この値は、 NestedException メンバーが 言語例外オブジェクトを指していることを指定します。

NestedException

種類: PVOID

入れ子になった例外の種類へのポインター。 オブジェクトの型は NestedExceptionType メンバーによって示されます。

解説

STOWED_EXCEPTION_INFORMATION_V2STOWED_EXCEPTION_INFORMATION_HEADER は現在、一般公開されているヘッダーでは定義されていないため、使用する前にソース コードで定義する必要があります。

STOWED_EXCEPTION_INFORMATION_V1構造体は、NestedExceptionType メンバーと NestedException メンバーを含まない点を除いて、この構造体と同じです。

必要条件

要件
サポートされている最小のクライアント
Windows 8.1 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2012 R2 [デスクトップ アプリのみ]
ヘッダー
なし

関連項目

EXCEPTION_RECORD

STOWED_EXCEPTION_INFORMATION_HEADER