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
シンボルがポインターであるかどうかを示すブール値を受け取ります。 シンボルがポインターでない場合、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が設定されている場合、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 を含む) |