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 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
Especifica el tamaño, en bytes, de esta estructura. Debe establecerse 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 sobre los elementos de la lista con 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 campoCallBack miembro de esta estructura, durante esta operación de 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 de.
DBG_DUMP_LIST debe establecerse en Opciones para indicar a este Ioctl para iterar 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 en el fieldCallBack miembro del linkList y Fields miembros.
pBuffer
Especifica un búfer que recibe información sobre el símbolo. Este búfer solo se usa si la marca de 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 FIELD_INFO estructuras 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
Los parámetros de la operación IG_DUMP_SYMBOL_INFO Ioctl son los miembros de la estructura SYM_DUMP_PARAM.
Esta operación de 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 Options, se llama a la función de devolución de llamada especificada en callbackRoutine para cada campo del símbolo.
Si nFields es distinto de 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 Campos. Si un campo coincide con un miembro de 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.
Las marcas de bits deXXX DBG_DUMP_ XXX se usan en el miembro Options de la estructura de SYM_DUMP_PARAM para controlar el comportamiento de la operación dede IG_DUMP_SYMBOL_INFO Ioctl.Las marcas siguientes pueden estar presentes.
Bandera | 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 IG_DUMP_SYMBOL_INFO Ioctl itera en esta lista. La descripción del miembro que apunta al siguiente elemento de la lista se especifica mediante el linkList miembro 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 solo el tamaño del símbolo; no imprimirá información de miembro ni funciones de devolución de llamada. |
DBG_DUMP_COMPACT_OUT | Las nuevas líneas 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 miembro listLink->tamaño de la estructura de SYM_DUMP_PARAM. |
DBG_DUMP_ADDRESS_OF_FIELD | El valor de addr es en realidad 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 de addr 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 repetir. Nivel puede ser un número comprendido entre 0 y 15.
El DBG_DUMP_FIELD_ marcadores de bits xxx se usa en el miembro fOptions de la estructura FIELD_INFO para controlar el comportamiento de la operación dede IG_DUMP_SYMBOL_INFO Ioctl.Las marcas siguientes pueden estar presentes.
Bandera | 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 | Los submembrados del miembro se procesan. |
DBG_DUMP_FIELD_FULL_NAME | fName debe coincidir completamente, en lugar de tener solo 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.dirección miembro contiene la dirección del miembro del símbolo.
Si no se proporciona ninguna dirección para el tipo, FIELD_INFO.dirección contiene el desplazamiento total del miembro desde el principio del tipo. |
DBG_DUMP_FIELD_SIZE_IN_BITS | Para un campo de bits, devuelva 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 repetir. Nivel puede ser un número comprendido entre 0 y 15.
Requisito | Valor |
---|---|
encabezado de | wdbgexts.h (incluya Wdbgexts.h, Dbgeng.h) |