структура SYM_DUMP_PARAM (wdbgexts.h)
Операция Ioctl IG_DUMP_SYMBOL_INFO предоставляет сведения о типе символа. При вызове Ioctl с параметром IoctlType , равным IG_DUMP_SYMBOL_INFO, 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 с элементами, заполненными для записи списка, а также содержимое элемента Контекста .
DBG_DUMP_LIST следует задать в разделе Параметры , чтобы сообщить этому Ioctl о переборе списка.
Context
Указывает указатель, передаваемый в функцию обратного вызова в элементе CallbackRoutine и функции обратного вызова в элементе fieldCallBack членов linkList и Fields .
pBuffer
Указывает буфер, который получает сведения о символе. Этот буфер используется только в том случае, если флаг DBG_DUMP_COPY_TYPE_DATA установлен в разделе Параметры. Размер этого буфера указывается в bufferSize.
CallbackRoutine
Задает функцию обратного вызова, вызываемую подсистемой. Подсистема предоставляет функции обратного вызова сведения о символе и его членах.
nFields
Указывает количество записей в массиве Fields .
Fields
Задает массив FIELD_INFO структур, управляющих поведением данной операции для отдельных членов указанного символа. Дополнительные сведения см. в разделе FIELD_INFO.
ModBase
Получает расположение в памяти целевого объекта начала модуля, содержащего символ.
TypeId
Получает идентификатор типа символа.
TypeSize
Получает размер (в байтах) символа в памяти целевого объекта.
BufferSize
Указывает размер буфера pBuffer (в байтах).
fPointer
Получает логическое значение, указывающее, является ли символ указателем. fPointer имеет значение FALSE , если символ не является указателем. Значение равно 1, если символ является 32-разрядным указателем, и 3, если символ является 64-разрядным указателем.
fArray
Получает логическое значение, указывающее, является ли символ массивом. fArray имеет значение FALSE , если символ не является массивом, и ЗНАЧЕНИЕ TRUE , если оно имеет значение .
fStruct
Получает логическое значение, указывающее, является ли символ структурой. fStruct имеет значение FALSE , если символ не является структурой, и TRUE , если он имеет значение .
fConstant
Получает логическое значение, указывающее, является ли символ константой. fConstant имеет значение FALSE , если символ не является константой, и TRUE , если он имеет значение .
Reserved
Комментарии
Параметры для операции Ioctl IG_DUMP_SYMBOL_INFO являются членами структуры SYM_DUMP_PARAM.
Эта операция Ioctl ищет сведения о модуле для символа, по возможности загружая символы модуля.
Если значение nFields равно нулю и DBG_DUMP_CALL_FOR_EACH задано в разделе Параметры, функция обратного вызова, указанная в CallbackRoutine , вызывается для каждого поля в символе .
Если значение nFields не равно нулю и DBG_DUMP_CALL_FOR_EACH задано в разделе Параметры, обратные вызовы выполняются только для полей, соответствующих элементу fName одного из элементов Fields . Если поле соответствует элементу fName , а член fieldCallBack не имеет значения NULL, вызывается функция обратного вызова в fieldCallBack ; Если значение равно NULL, вместо этого вызывается функция обратного вызова в CallbackRoutine .
Битовые флаги DBG_DUMP_XXX используются элементом Options структуры SYM_DUMP_PARAM для управления поведением операции IoctlIG_DUMP_SYMBOL_INFO.
Могут присутствовать следующие флаги.
Flag | Действие |
---|---|
DBG_DUMP_NO_INDENT | Члены не имеют отступа в выходных данных. |
DBG_DUMP_NO_OFFSET | Смещения не печатаются. |
DBG_DUMP_VERBOSE | Подробные выходные данные. |
DBG_DUMP_CALL_FOR_EACH | Функция обратного вызова вызывается для каждого члена. |
DBG_DUMP_LIST | Символ является записью в связанном списке, и операция Ioctl IG_DUMP_SYMBOL_INFO выполняет итерацию по этому списку. Описание элемента, указывающего на следующий элемент в списке, задается элементом linkList структуры SYM_DUMP_PARAM. |
DBG_DUMP_NO_PRINT | Ничего не выводится (вызываются только функции обратного вызова и выполняется копирование данных). |
DBG_DUMP_GET_SIZE_ONLY | Операция Ioctl возвращает только размер символа; он не будет выводить сведения о членах или вызывать функции обратного вызова. |
DBG_DUMP_COMPACT_OUT | Новые линии не печатаются после каждого элемента. |
DBG_DUMP_ARRAY | Символом является массив. Количество элементов в массиве определяется размером элемента listLink-> структуры SYM_DUMP_PARAM. |
DBG_DUMP_ADDRESS_OF_FIELD | Значение addr фактически является адресом элемента listLink->fName структуры SYM_DUMP_PARAM, а не началом символа. |
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) можно добавить в набор битов, чтобы указать, насколько глубоко в структурах требуется рекурсия. Уровень может быть числом от 0 до 15.
Битовые флаги DBG_DUMP_FIELD_XXX используются членом fOptions структуры FIELD_INFO для управления поведением операции IoctlIG_DUMP_SYMBOL_INFO.
Могут присутствовать следующие флаги.
Flag | Действие |
---|---|
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) можно добавить в набор битов, чтобы указать, насколько глубоко в структурах требуется рекурсия. Уровень может быть числом от 0 до 15.
Требования
Требование | Значение |
---|---|
Заголовок | wdbgexts.h (включая Wdbgexts.h, Dbgeng.h) |