次の方法で共有


SYM_DUMP_PARAM構造体 (wdbgexts.h)

IG_DUMP_SYMBOL_INFO Ioctl 操作は、シンボルの種類に関する情報を提供します。 IoctlType を IG_DUMP_SYMBOL_INFO に設定 Ioctl を呼び出す場合、IpvData には、SYM_DUMP_PARAM構造体のインスタンスが含まれている必要があります。

構文

typedef struct _SYM_DUMP_PARAM {
  ULONG                    size;
  PUCHAR                   sName;
  ULONG                    Options;
  ULONG64                  addr;
  PFIELD_INFO              listLink;
  union {
    PVOID Context;
    PVOID pBuffer;
  };
  PSYM_DUMP_FIELD_CALLBACK CallbackRoutine;
  ULONG                    nFields;
  PFIELD_INFO              Fields;
  ULONG64                  ModBase;
  ULONG                    TypeId;
  ULONG                    TypeSize;
  ULONG                    BufferSize;
  ULONG                    fPointer : 2;
  ULONG                    fArray : 1;
  ULONG                    fStruct : 1;
  ULONG                    fConstant : 1;
  ULONG                    Reserved : 27;
} SYM_DUMP_PARAM, *PSYM_DUMP_PARAM;

メンバーズ

size

この構造体のサイズをバイト単位で指定します。 sizeof(SYM_DUMP_PARAM)に設定する必要があります。

sName

参照するシンボルの名前を指定します。

Options

この Ioctl 操作の動作を決定するフラグを指定します。 これらのフラグの説明については、「解説」を参照してください。

addr

シンボルのアドレスを指定します。

listLink

リンク リスト内の次の項目を含むフィールドを指定します。 シンボルがリンク リスト内のエントリである場合、この Ioctl 操作は、リスト内の次の項目へのポインターとしてここで指定されたフィールドを使用して、リスト内の項目を反復処理できます。 この構造体の型は FIELD_INFOです。

この構造体の fieldCallBack メンバーで指定されたコールバック関数は、この Ioctl 操作中に、リスト内の各項目に対して呼び出されます。 呼び出されると、この linkList 構造体が渡され、リスト エントリのメンバーと、Context メンバーの内容が入力されます。

この Ioctl にリストを反復処理するように指示するには、DBG_DUMP_LIST オプション で設定する必要があります。

Context

CallbackRoutine メンバーのコールバック関数と、linkList および Fields メンバーの fieldCallBack メンバーのコールバック関数に渡されるポインターを指定します。

pBuffer

シンボルに関する情報を受け取るバッファーを指定します。 このバッファーは、DBG_DUMP_COPY_TYPE_DATA フラグが Optionsで設定されている場合にのみ使用されます。 このバッファーのサイズは、BufferSize で指定

CallbackRoutine

エンジンによって呼び出されるコールバック関数を指定します。 エンジンは、シンボルとそのメンバーに関する情報をコールバック関数に提供します。

nFields

Fields 配列内のエントリの数を指定します。

Fields

指定したシンボルの個々のメンバーに対するこの操作の動作を制御する FIELD_INFO 構造体の配列を指定します。 詳細については、FIELD_INFOを参照してください。

ModBase

シンボルを含むモジュールの先頭のターゲットのメモリ内の場所を受け取ります。

TypeId

シンボルの型 ID を受け取ります。

TypeSize

ターゲットのメモリ内のシンボルのサイズ (バイト単位) を受け取ります。

BufferSize

pBuffer バッファーのサイズをバイト単位で指定します。

fPointer

シンボルがポインターであるかどうかを示すブール値を受け取ります。 シンボルがポインターでない場合、fPointer が FALSE 。 シンボルが 32 ビット ポインターの場合は 1、シンボルが 64 ビット ポインターの場合は 3 です。

fArray

シンボルが配列であるかどうかを示すブール値を受け取ります。 fArray は、シンボルが配列でない場合は FALSE され、存在する場合は TRUE

fStruct

シンボルが構造体であるかどうかを示すブール値を受け取ります。 fStruct は、シンボルが構造体でない場合は FALSE され、存在する場合は TRUE

fConstant

シンボルが定数であるかどうかを示すブール値を受け取ります。 fConstant は、シンボルが定数でない場合は FALSE され、定数でない場合は TRUE

Reserved

備考

IG_DUMP_SYMBOL_INFO Ioctl 操作のパラメーターは、SYM_DUMP_PARAM構造体のメンバーです。

この Ioctl 操作では、シンボルのモジュール情報が検索され、可能であればモジュール シンボルが読み込まれます。

nFields が 0 で、DBG_DUMP_CALL_FOR_EACHが Optionsで設定されている場合、CallbackRoutine で指定されたコールバック関数がシンボル内のすべてのフィールドに対して呼び出されます。

nFields が 0 以外で、DBG_DUMP_CALL_FOR_EACHが Optionsで設定されている場合、コールバックは、Fields 要素のいずれかの fName メンバーに一致するフィールドに対してのみ行われます。 フィールドが fName メンバーと一致し、fieldCallBack メンバーが NULL でない場合は、fieldCallBack のコールバック関数が呼び出されます。NULL 場合は、callbackRoutine のコールバック関数 代わりに呼び出されます。

DBG_DUMP_XXX ビット フラグは、IG_DUMP_SYMBOL_INFOIoctl 操作の動作を制御するために、SYM_DUMP_PARAM構造体の Options メンバーによって使用されます。

次のフラグを指定できます。

影響
DBG_DUMP_NO_INDENT メンバーは出力でインデントされません。
DBG_DUMP_NO_OFFSET オフセットは印刷されません。
DBG_DUMP_VERBOSE 詳細出力。
DBG_DUMP_CALL_FOR_EACH 各メンバーに対してコールバック関数が呼び出されます。
DBG_DUMP_LIST シンボルはリンク リスト内のエントリであり、IG_DUMP_SYMBOL_INFO Ioctl 操作はこのリストを反復処理します。 リスト内の次の項目を指すメンバーの説明は、SYM_DUMP_PARAM構造体の linkList メンバーによって指定されます。
DBG_DUMP_NO_PRINT 何も出力されません (コールバック関数のみが呼び出され、データ コピーが実行されます)。
DBG_DUMP_GET_SIZE_ONLY Ioctl 操作は、シンボルのサイズのみを返します。メンバー情報の出力やコールバック関数の呼び出しは行われません。
DBG_DUMP_COMPACT_OUT 改行は、各メンバーの後に印刷されません。
DBG_DUMP_ARRAY シンボルは配列です。 配列内の要素の数は、SYM_DUMP_PARAM構造体のメンバー listLink->サイズ によって指定されます。
DBG_DUMP_ADDRESS_OF_FIELD 加算子 の値は、実際には、シンボルの先頭ではなく、SYM_DUMP_PARAM構造体のメンバー listLink->fName のアドレスです。
DBG_DUMP_ADDRESS_AT_END 加算 の値は、実際にはシンボルの先頭ではなく、シンボルの末尾にあるアドレスです。
DBG_DUMP_COPY_TYPE_DATA シンボルの値は、pBuffer メンバーにコピーされます。 これはプリミティブ型 (ULONG や PVOID など) でのみ使用できます。構造体では使用できません。
DBG_DUMP_READ_PHYSICAL シンボルの値は、ターゲットの物理メモリから直接読み取られます。
DBG_DUMP_FUNCTION_FORMAT 関数型を持つシンボルを書式設定する場合、関数の形式が使用されます (例: function(arg1, arg2, ...)
DBG_DUMP_BLOCK_RECURSE 入れ子になった構造体を再帰します。ただし、ポインターに従わないでください。
 

さらに、マクロ DBG_DUMP_RECUR_LEVEL(Level) の結果をビット セットに追加して、再帰する構造体の深さを指定できます。 レベル には、0 ~ 15 の範囲の数値を指定できます。

DBG_DUMP_FIELD_XXX ビット フラグは、IG_DUMP_SYMBOL_INFOIoctl 操作の動作を制御するために、FIELD_INFO 構造体の fOptions メンバーによって使用されます。

次のフラグを指定できます。

影響
DBG_DUMP_FIELD_CALL_BEFORE_PRINT コールバック関数は、メンバーを印刷する前に呼び出されます。
DBG_DUMP_FIELD_NO_CALLBACK_REQ コールバック関数は呼び出されません。
DBG_DUMP_FIELD_RECUR_ON_THIS メンバーのサブメンバーが処理されます。
DBG_DUMP_FIELD_FULL_NAME fName は、メンバーを処理するために、一致するプレフィックスを持つだけでなく、完全に一致する必要があります。
DBG_DUMP_FIELD_ARRAY 配列メンバーの配列要素を出力します。
DBG_DUMP_FIELD_COPY_FIELD_DATA メンバーの値は pBuffer にコピーされます。
DBG_DUMP_FIELD_RETURN_ADDRESS コールバック中、または Ioctl が返 場合、FIELD_INFO。メンバーアドレス シンボルのメンバーのアドレスが含まれています。

型にアドレスが指定されていない場合は、FIELD_INFO。アドレス には、型の先頭からのメンバーの合計オフセットが含まれます。

DBG_DUMP_FIELD_SIZE_IN_BITS ビット フィールドの場合は、オフセットとサイズをバイトではなくビット単位で返します。
DBG_DUMP_FIELD_NO_PRINT このメンバーを出力しないでください (コールバック関数のみが呼び出され、データ コピーが実行されます)。
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING メンバーがポインターの場合は、文字列、ANSI 文字列、WCHAR 文字列、MULTI 文字列、または GUID として出力されます。
 

さらに、マクロ DBG_DUMP_RECUR_LEVEL(Level) の結果をビット セットに追加して、再帰する構造体の深さを指定できます。 レベル には、0 ~ 15 の範囲の数値を指定できます。

必要条件

要件 価値
ヘッダー wdbgexts.h (Wdbgexts.h、Dbgeng.h を含む)

関連項目

DBG_DUMP_XXX

FIELD_INFO

IG_DUMP_SYMBOL_INFO エラー コードの

Ioctl する