estructura SYM_DUMP_PARAM (wdbgexts.h)
La operación de IG_DUMP_SYMBOL_INFO Ioctl proporciona información sobre el tipo de un símbolo. Al llamar a Ioctl con IoctlType establecido en IG_DUMP_SYMBOL_INFO, IpvData debe contener una instancia de la estructura de SYM_DUMP_PARAM.
Sintaxis
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;
Miembros
size
Especifica el tamaño, en bytes, de esta estructura. Se debe establecer en sizeof(SYM_DUMP_PARAM)
.
sName
Especifica el nombre del símbolo que se va a buscar.
Options
Especifica las marcas que determinan el comportamiento de esta operación de Ioctl . Para obtener una descripción de estas marcas, vea Comentarios.
addr
Especifica la dirección del símbolo.
listLink
Especifica el campo que contiene el siguiente elemento de una lista vinculada. Si el símbolo es una entrada de una lista vinculada, esta operación Ioctl puede iterar por los elementos de la lista mediante el campo especificado aquí como puntero al siguiente elemento de la lista. El tipo de esta estructura es FIELD_INFO.
Se llama a la función de devolución de llamada especificada en el miembro fieldCallBack de esta estructura, durante esta operación Ioctl , para cada elemento de la lista. Cuando se llama a , se pasa esta estructura linkList con los miembros rellenados para la entrada de lista junto con el contenido del miembro Context .
DBG_DUMP_LIST debe establecerse en Opciones para indicar a este Ioctl que itera en la lista.
Context
Especifica un puntero que se pasa a la función de devolución de llamada en el miembro CallbackRoutine y a las funciones de devolución de llamada del miembro fieldCallBack de los miembros linkList y Fields .
pBuffer
Especifica un búfer que recibe información sobre el símbolo. Este búfer solo se usa si la marca DBG_DUMP_COPY_TYPE_DATA está establecida en Opciones. El tamaño de este búfer se especifica en BufferSize.
CallbackRoutine
Especifica una función de devolución de llamada a la que llama el motor. El motor proporciona la función de devolución de llamada con información sobre el símbolo y sus miembros.
nFields
Especifica el número de entradas de la matriz Fields .
Fields
Especifica una matriz de estructuras de FIELD_INFO que controlan el comportamiento de esta operación para miembros individuales del símbolo especificado. Consulte FIELD_INFO para obtener más información.
ModBase
Recibe la ubicación en la memoria del destino del inicio del módulo que contiene el símbolo.
TypeId
Recibe el identificador de tipo del símbolo.
TypeSize
Recibe el tamaño, en bytes, del símbolo en la memoria del destino.
BufferSize
Especifica el tamaño, en bytes, del búfer de pBuffer .
fPointer
Recibe un valor booleano que indica si el símbolo es un puntero. fPointer es FALSE si el símbolo no es un puntero. Es 1 si el símbolo es un puntero de 32 bits y 3 si el símbolo es un puntero de 64 bits.
fArray
Recibe un valor booleano que indica si el símbolo es una matriz. fArray es FALSE si el símbolo no es una matriz y TRUE si es.
fStruct
Recibe un valor booleano que indica si el símbolo es una estructura. fStruct es FALSE si el símbolo no es una estructura y TRUE si es.
fConstant
Recibe un valor booleano que indica si el símbolo es una constante. fConstant es FALSE si el símbolo no es una constante y TRUE si es.
Reserved
Comentarios
Los parámetros de la operación IG_DUMP_SYMBOL_INFO Ioctl son los miembros de la estructura SYM_DUMP_PARAM.
Esta operación Ioctl busca la información del módulo para el símbolo, cargando símbolos de módulo si es posible.
Si nFields es cero y DBG_DUMP_CALL_FOR_EACH se establece en Opciones, se llama a la función de devolución de llamada especificada en CallbackRoutine para cada campo del símbolo.
Si nFields no es cero y DBG_DUMP_CALL_FOR_EACH se establece en Opciones, las devoluciones de llamada solo se realizan para esos campos que coinciden con el miembro fName de uno de los elementos Fields . Si un campo coincide con un miembro fName y el miembro fieldCallBack no es NULL, se llama a la función de devolución de llamada en fieldCallBack ; si es NULL, se llama a la función de devolución de llamada en CallbackRoutine .
El miembro Options de la estructura de SYM_DUMP_PARAM usa las marcas de bits DBG_DUMP_XXX para controlar el comportamiento de la operación de IG_DUMP_SYMBOL_INFOIoctl.
Las marcas siguientes pueden estar presentes.
Marca | Efecto |
---|---|
DBG_DUMP_NO_INDENT | Los miembros no tienen sangría en la salida. |
DBG_DUMP_NO_OFFSET | Los desplazamientos no se imprimen. |
DBG_DUMP_VERBOSE | Salida detallada. |
DBG_DUMP_CALL_FOR_EACH | Se llama a una función de devolución de llamada para cada miembro. |
DBG_DUMP_LIST | El símbolo es una entrada de una lista vinculada y la operación de IG_DUMP_SYMBOL_INFO Ioctl iterará en esta lista. La descripción del miembro que apunta al siguiente elemento de la lista se especifica mediante el miembro linkList de la estructura SYM_DUMP_PARAM. |
DBG_DUMP_NO_PRINT | No se imprime nada (solo se llaman funciones de devolución de llamada y se realizan copias de datos). |
DBG_DUMP_GET_SIZE_ONLY | La operación Ioctl devuelve el tamaño del símbolo solo; no imprimirá información de miembro ni funciones de devolución de llamada. |
DBG_DUMP_COMPACT_OUT | Las líneas nuevas no se imprimen después de cada miembro. |
DBG_DUMP_ARRAY | El símbolo es una matriz. El número de elementos de la matriz se especifica mediante el tamaño listLink-> miembro de la estructura SYM_DUMP_PARAM. |
DBG_DUMP_ADDRESS_OF_FIELD | El valor del agregador es realmente la dirección del miembro listLink->fName de la estructura SYM_DUMP_PARAM y no el principio del símbolo. |
DBG_DUMP_ADDRESS_AT_END | El valor del agregador es realmente la dirección al final del símbolo y no el principio del símbolo. |
DBG_DUMP_COPY_TYPE_DATA | El valor del símbolo se copia en el miembro pBuffer. Esto solo se puede usar para tipos primitivos(por ejemplo, ULONG o PVOID), no se puede usar con estructuras. |
DBG_DUMP_READ_PHYSICAL | El valor del símbolo se leerá directamente desde la memoria física del destino. |
DBG_DUMP_FUNCTION_FORMAT |
Al dar formato a un símbolo que tiene un tipo de función, se usará el formato de función, por ejemplo, function(arg1, arg2, ...)
|
DBG_DUMP_BLOCK_RECURSE | Recurse a través de estructuras anidadas; pero no siguen punteros. |
Además, el resultado de la macro DBG_DUMP_RECUR_LEVEL(Level) se puede agregar al conjunto de bits para especificar la profundidad en las estructuras que se van a recurse. El nivel puede ser un número comprendido entre 0 y 15.
El miembro fOptions de la estructura de FIELD_INFO usa las marcas de bits DBG_DUMP_FIELD_XXX para controlar el comportamiento de la operación de IG_DUMP_SYMBOL_INFOIoctl.
Las marcas siguientes pueden estar presentes.
Marca | Efecto |
---|---|
DBG_DUMP_FIELD_CALL_BEFORE_PRINT | Se llama a la función de devolución de llamada antes de imprimir el miembro. |
DBG_DUMP_FIELD_NO_CALLBACK_REQ | No se llama a ninguna función de devolución de llamada. |
DBG_DUMP_FIELD_RECUR_ON_THIS | Se procesan los submembrados del miembro. |
DBG_DUMP_FIELD_FULL_NAME | fName debe coincidir completamente, en lugar de tener un prefijo coincidente, para que el miembro se procese. |
DBG_DUMP_FIELD_ARRAY | Imprimir elementos de matriz de un miembro de matriz. |
DBG_DUMP_FIELD_COPY_FIELD_DATA | El valor del miembro se copia en pBuffer. |
DBG_DUMP_FIELD_RETURN_ADDRESS |
Durante una devolución de llamada o cuando se devuelve Ioctl , el FIELD_INFO. el miembro address contiene la dirección del miembro del símbolo.
Si no se proporciona ninguna dirección para el tipo, FIELD_INFO. address contiene el desplazamiento total del miembro desde el principio del tipo. |
DBG_DUMP_FIELD_SIZE_IN_BITS | Para un campo de bits, devuelve el desplazamiento y el tamaño en bits en lugar de bytes. |
DBG_DUMP_FIELD_NO_PRINT | No imprima este miembro (solo se llama a la función de devolución de llamada y se realizan copias de datos). |
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING | Si el miembro es un puntero, se imprime como una cadena, una cadena ANSI, una cadena WCHAR, una cadena MULTI o un GUID. |
Además, el resultado de la macro DBG_DUMP_RECUR_LEVEL(Level) se puede agregar al conjunto de bits para especificar la profundidad en las estructuras que se van a recursar. El nivel puede ser un número comprendido entre 0 y 15.
Requisitos
Requisito | Valor |
---|---|
Header | wdbgexts.h (include Wdbgexts.h, Dbgeng.h) |