SYM_DUMP_PARAM struttura (wdbgexts.h)
L'operazione IG_DUMP_SYMBOL_INFO Ioctl fornisce informazioni sul tipo di un simbolo. Quando si chiama Ioctl con IoctlType impostato su IG_DUMP_SYMBOL_INFO, IpvData deve contenere un'istanza della struttura SYM_DUMP_PARAM.
Sintassi
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;
Members
size
Specifica le dimensioni, in byte, di questa struttura. Deve essere impostato su sizeof(SYM_DUMP_PARAM)
.
sName
Specifica il nome del simbolo da cercare.
Options
Specifica i flag che determinano il comportamento di questa operazione Ioctl . Per una descrizione di questi flag, vedere Osservazioni.
addr
Specifica l'indirizzo del simbolo.
listLink
Specifica il campo contenente l'elemento successivo in un elenco collegato. Se il simbolo è una voce in un elenco collegato, questa operazione Ioctl può scorrere gli elementi nell'elenco usando il campo specificato qui come puntatore all'elemento successivo nell'elenco. Il tipo di questa struttura è FIELD_INFO.
La funzione di callback specificata nel campoCallBack membro di questa struttura viene chiamata, durante questa operazione Ioctl , per ogni elemento dell'elenco. Quando viene chiamato, viene passata questa struttura linkList con i membri compilati per la voce dell'elenco insieme al contenuto del membro Context .
DBG_DUMP_LIST deve essere impostato in Opzioni per indicare a Ioctl di eseguire l'iterazione nell'elenco.
Context
Specifica un puntatore passato alla funzione callback nel membro CallbackRoutine e alle funzioni di callback nel campoCallBack dei membri linkList e Fields .
pBuffer
Specifica un buffer che riceve informazioni sul simbolo. Questo buffer viene usato solo se il flag di DBG_DUMP_COPY_TYPE_DATA è impostato in Opzioni. Le dimensioni di questo buffer vengono specificate in BufferSize.
CallbackRoutine
Specifica una funzione di callback chiamata dal motore. Il motore fornisce la funzione di callback con informazioni sul simbolo e sui relativi membri.
nFields
Specifica il numero di voci nella matrice Campi .
Fields
Specifica una matrice di strutture FIELD_INFO che controllano il comportamento di questa operazione per singoli membri del simbolo specificato. Per informazioni dettagliate, vedere FIELD_INFO.
ModBase
Riceve la posizione nella memoria della destinazione dell'inizio del modulo che contiene il simbolo.
TypeId
Riceve l'ID del tipo del simbolo.
TypeSize
Riceve le dimensioni, in byte, del simbolo nella memoria della destinazione.
BufferSize
Specifica le dimensioni, in byte, del buffer pBuffer .
fPointer
Riceve un valore booleano che indica se il simbolo è un puntatore. fPointer è FALSE se il simbolo non è un puntatore. È 1 se il simbolo è un puntatore a 32 bit e 3 se il simbolo è un puntatore a 64 bit.
fArray
Riceve un valore booleano che indica se il simbolo è una matrice. fArray è FALSE se il simbolo non è una matrice e TRUE se è.
fStruct
Riceve un valore booleano che indica se il simbolo è una struttura. fStruct è FALSE se il simbolo non è una struttura e TRUE se è.
fConstant
Riceve un valore booleano che indica se il simbolo è una costante. fConstant è FALSE se il simbolo non è una costante e TRUE se è.
Reserved
Commenti
I parametri per l'operazione Ioctl IG_DUMP_SYMBOL_INFO sono i membri della struttura SYM_DUMP_PARAM.
Questa operazione Ioctl cerca le informazioni sul modulo per il simbolo, caricando i simboli del modulo, se possibile.
Se nFields è zero e DBG_DUMP_CALL_FOR_EACH è impostato in Opzioni, la funzione di callback specificata in CallbackRoutine viene chiamata per ogni campo nel simbolo.
Se nFields è diverso da zero e DBG_DUMP_CALL_FOR_EACH è impostato in Opzioni, i callback vengono eseguiti solo per tali campi che corrispondono al membro fName di uno degli elementi Fields . Se un campo corrisponde a un membro fName e il membro fieldCallBack non è NULL, viene chiamata la funzione callback nel campoCallBack ; se è NULL, la funzione di callback in CallbackRoutine viene invece chiamata.
I flag di bit DBG_DUMP_XXX vengono usati dal membro Opzioni della struttura SYM_DUMP_PARAM per controllare il comportamento dell'operazioneIoctl IG_DUMP_SYMBOL_INFO.
I flag seguenti possono essere presenti.
Contrassegno | Effetto |
---|---|
DBG_DUMP_NO_INDENT | I membri non vengono rientri nell'output. |
DBG_DUMP_NO_OFFSET | Gli offset non vengono stampati. |
DBG_DUMP_VERBOSE | Output dettagliato. |
DBG_DUMP_CALL_FOR_EACH | Viene chiamata una funzione di callback per ogni membro. |
DBG_DUMP_LIST | Il simbolo è una voce in un elenco collegato e l'operazione IG_DUMP_SYMBOL_INFO Ioctl eseguirà l'iterazione su questo elenco. La descrizione del membro che punta all'elemento successivo nell'elenco viene specificata dal membro linkList della struttura SYM_DUMP_PARAM. |
DBG_DUMP_NO_PRINT | Niente viene stampato (vengono chiamate solo le funzioni di callback e vengono eseguite copie dei dati). |
DBG_DUMP_GET_SIZE_ONLY | L'operazione Ioctl restituisce solo le dimensioni del simbolo; non stampa le informazioni sui membri o le funzioni di callback. |
DBG_DUMP_COMPACT_OUT | Le nuove linee non vengono stampate dopo ogni membro. |
DBG_DUMP_ARRAY | Il simbolo è una matrice. Il numero di elementi nella matrice viene specificato dalla dimensione del membro listLink-> della struttura SYM_DUMP_PARAM. |
DBG_DUMP_ADDRESS_OF_FIELD | Il valore di addr è effettivamente l'indirizzo dell'elenco membriLink->fName della struttura SYM_DUMP_PARAM e non l'inizio del simbolo. |
DBG_DUMP_ADDRESS_AT_END | Il valore di addr è effettivamente l'indirizzo alla fine del simbolo e non l'inizio del simbolo. |
DBG_DUMP_COPY_TYPE_DATA | Il valore del simbolo viene copiato nel membro pBuffer. Questo può essere usato solo per i tipi primitivi, ad esempio ULONG o PVOID, non può essere usato con strutture. |
DBG_DUMP_READ_PHYSICAL | Il valore del simbolo verrà letto direttamente dalla memoria fisica della destinazione. |
DBG_DUMP_FUNCTION_FORMAT |
Quando si formatta un simbolo con un tipo di funzione, verrà usato il formato della funzione, ad esempio function(arg1, arg2, ...)
|
DBG_DUMP_BLOCK_RECURSE | Si ripete attraverso strutture nidificate; ma non seguire i puntatori. |
Inoltre, il risultato della macro DBG_DUMP_RECUR_LEVEL(Livello) può essere aggiunto al set di bit per specificare la profondità delle strutture da ricreare. Il livello può essere un numero compreso tra 0 e 15.
I flag di bit DBG_DUMP_FIELD_XXX vengono usati dal membro fOptionsdella struttura FIELD_INFO per controllare il comportamento dell'operazioneIoctl IG_DUMP_SYMBOL_INFO.
I flag seguenti possono essere presenti.
Contrassegno | Effetto |
---|---|
DBG_DUMP_FIELD_CALL_BEFORE_PRINT | La funzione di callback viene chiamata prima di stampare il membro. |
DBG_DUMP_FIELD_NO_CALLBACK_REQ | Non viene chiamata alcuna funzione di callback. |
DBG_DUMP_FIELD_RECUR_ON_THIS | I sottomember del membro vengono elaborati. |
DBG_DUMP_FIELD_FULL_NAME | fName deve corrispondere completamente, anziché solo avere un prefisso corrispondente, affinché il membro venga elaborato. |
DBG_DUMP_FIELD_ARRAY | Stampare gli elementi della matrice di un membro della matrice. |
DBG_DUMP_FIELD_COPY_FIELD_DATA | Il valore del membro viene copiato in pBuffer. |
DBG_DUMP_FIELD_RETURN_ADDRESS |
Durante un callback o quando Ioctl restituisce, il FIELD_INFO. il membro dell'indirizzo contiene l'indirizzo del membro del simbolo.
Se non viene fornito alcun indirizzo per il tipo, FIELD_INFO. l'indirizzo contiene l'offset totale del membro dall'inizio del tipo. |
DBG_DUMP_FIELD_SIZE_IN_BITS | Per un campo bit, restituire l'offset e le dimensioni in bit anziché byte. |
DBG_DUMP_FIELD_NO_PRINT | Non stampare questo membro (viene chiamata solo la funzione callback e vengono eseguite copie dei dati). |
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING | Se il membro è un puntatore, viene stampato come stringa, stringa ANSI , stringa WCHAR, STRINGA MULTI o GUID. |
Inoltre, il risultato della macro DBG_DUMP_RECUR_LEVEL(Livello) può essere aggiunto al set di bit per specificare la profondità delle strutture da ricreare. Il livello può essere un numero compreso tra 0 e 15.
Requisiti
Requisito | Valore |
---|---|
Intestazione | wdbgexts.h (include Wdbgexts.h, Dbgeng.h) |