Share via


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 フラグが設定されている場合にのみ使用されます。 このバッファーのサイズは BufferSize で指定します。

CallbackRoutine

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

nFields

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

Fields

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

ModBase

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

TypeId

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

TypeSize

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

BufferSize

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

fPointer

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

fArray

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

fStruct

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

fConstant

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

Reserved

注釈

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

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

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

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

DBG_DUMP_XXX ビット フラグは、IG_DUMP_SYMBOL_INFO Ioctl 操作の動作を制御するために、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 addr の値は、実際には、シンボルの先頭ではなく、SYM_DUMP_PARAM構造体のメンバー listLink->fName のアドレスです。
DBG_DUMP_ADDRESS_AT_END addr の値は、実際にはシンボルの先頭ではなく、シンボルの末尾にあるアドレスです。
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) の結果をビット セットに追加して、再帰する構造体の深さを指定できます。 Level には、0 ~ 15 の範囲の数値を指定できます。

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

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

フラグ 結果
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。address メンバーには、シンボルのメンバーのアドレスが含まれます。

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

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) の結果をビット セットに追加して、再帰する構造体の深さを指定できます。 Level には、0 ~ 15 の範囲の数値を指定できます。

要件

要件
Header wdbgexts.h (Wdbgexts.h、Dbgeng.h を含む)

こちらもご覧ください

DBG_DUMP_XXX

FIELD_INFO

IG_DUMP_SYMBOL_INFO エラー コード

Ioctl