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 を含む) |
関連項目
Ioctl を する