структура SYM_DUMP_PARAM (wdbgexts.h)
Операция IG_DUMP_SYMBOL_INFO Ioctl предоставляет сведения о типе символа. При вызове 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 linkList с элементами, заполненными для записи списка, а также содержимое элемента контекста.
DBG_DUMP_LIST следует задать в параметрах , чтобы сообщить об этом Ioctl, чтобы выполнить итерацию по списку.
Context
Указывает указатель, передаваемый функции обратного вызова в элементе CallbackRoutine, а также функции обратного вызова в элементе fieldCallBack элемента списка ссылок и полей.
pBuffer
Указывает буфер, который получает сведения о символе. Этот буфер используется только в том случае, если флаг DBG_DUMP_COPY_TYPE_DATA задан в параметрах . Размер этого буфера указывается в BufferSize.
CallbackRoutine
Указывает функцию обратного вызова, вызываемую подсистемой. Подсистема предоставляет функцию обратного вызова с информацией о символе и его членах.
nFields
Указывает количество записей в массиве полей .
Fields
Задает массив FIELD_INFO структур, которые управляют поведением этой операции для отдельных элементов указанного символа. Дополнительные сведения см. в FIELD_INFO.
ModBase
Получает расположение в памяти целевого объекта начала модуля, содержащего символ.
TypeId
Получает идентификатор типа символа.
TypeSize
Получает размер в байтах символа в памяти целевого объекта.
BufferSize
Задает размер в байтах буфера pBuffer.
fPointer
Получает логическое значение, указывающее, является ли символ указателем. fPointer FALSE, если символ не является указателем. Значение 1, если символ является 32-разрядным указателем и 3, если символ является 64-разрядным указателем.
fArray
Получает логическое значение, указывающее, является ли символ массивом. fArray false, если символ не является массивом и TRUE, если он есть.
fStruct
Получает логическое значение, указывающее, является ли символ структурой. структуры FALSE, если символ не является структурой и TRUE, если он есть.
fConstant
Получает логическое значение, указывающее, является ли символ константой. fConstantFALSE, если символ не является константой и TRUE, если он есть.
Reserved
Замечания
Параметры для операции IG_DUMP_SYMBOL_INFO Ioctl являются членами структуры SYM_DUMP_PARAM.
При возможности эта операция Ioctl ищет сведения о модуле для символа, загружая символы модуля.
Если nFields равно нулю и DBG_DUMP_CALL_FOR_EACH задано в options, функция обратного вызова, указанная в CallbackRoutine, вызывается для каждого поля в символе.
Если nFields не равно нулю и DBG_DUMP_CALL_FOR_EACH задан в options, обратные вызовы выполняются только для этих полей, соответствующих элементу fName одного из элементов Fields. Если поле соответствует элементу fName и элементу fieldCallBack не NULL, вызывается функция обратного вызова в fieldCallBack; Если он NULL, функция обратного вызова в CallbackRoutine вызывается.
Флаги DBG_DUMP_XXX используются элементом параметров структуры SYM_DUMP_PARAM для управления поведением операции IG_DUMP_SYMBOL_INFOIoctl.
Могут присутствовать следующие флаги.
Флаг | Эффект |
---|---|
DBG_DUMP_NO_INDENT | Элементы не являются отступами в выходных данных. |
DBG_DUMP_NO_OFFSET | Смещения не печатаются. |
DBG_DUMP_VERBOSE | Подробные выходные данные. |
DBG_DUMP_CALL_FOR_EACH | Функция обратного вызова вызывается для каждого элемента. |
DBG_DUMP_LIST | Символ является записью в связанном списке, а операция IG_DUMP_SYMBOL_INFO Ioctl будет итерировать по этому списку. Описание элемента, указывающего на следующий элемент в списке, указывается элементом 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 | Значение надстройки — это фактически адрес элемента listLink->fName структуры SYM_DUMP_PARAM, а не начало символа. |
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(уровня) можно добавить в битовый набор, чтобы указать, насколько глубоко в структурах следует рекурсировать. уровень может быть числом от 0 до 15.
Флаги DBG_DUMP_FIELD_XXX используются элементом fOptionsFIELD_INFO для управления поведением операции 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.адрес член содержит адрес члена символа.
Если адрес не указан для типа, 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, МНОГОстрочная строка или GUID. |
Кроме того, результат макроса DBG_DUMP_RECUR_LEVEL(уровня) можно добавить в битовый набор, чтобы указать, насколько глубоко в структурах следует рекурсировать. уровень может быть числом от 0 до 15.
Требования
Требование | Ценность |
---|---|
заголовка | wdbgexts.h (include Wdbgexts.h, Dbgeng.h) |