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


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

См. также раздел

DBG_DUMP_XXX

FIELD_INFO

Коды ошибок IG_DUMP_SYMBOL_INFO

Ioctl