Поделиться через


структура 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)

См. также

DBG_DUMP_XXX

FIELD_INFO

IG_DUMP_SYMBOL_INFO коды ошибок

Ioctl