SYM_DUMP_PARAM-Struktur (wdbgexts.h)
Der IG_DUMP_SYMBOL_INFO Ioctl-Vorgang enthält Informationen zum Typ eines Symbols. Wenn Sie Ioctl aufrufen, wobei IoctlType auf IG_DUMP_SYMBOL_INFO festgelegt ist, sollte IpvData eine instance der SYM_DUMP_PARAM-Struktur enthalten.
Syntax
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;
Member
size
Gibt die Größe dieser Struktur in Bytes an. Diese Angabe sollte auf sizeof(SYM_DUMP_PARAM)
(Ja) festgelegt sein.
sName
Gibt den Namen des nachschlagenden Symbols an.
Options
Gibt die Flags an, die das Verhalten dieses Ioctl-Vorgangs bestimmen. Eine Beschreibung dieser Flags finden Sie unter Hinweise.
addr
Gibt die Adresse des Symbols an.
listLink
Gibt das Feld an, das das nächste Element in einer verknüpften Liste enthält. Wenn das Symbol ein Eintrag in einer verknüpften Liste ist, kann dieser Ioctl-Vorgang die Elemente in der Liste mithilfe des hier angegebenen Felds als Zeiger auf das nächste Element in der Liste durchlaufen. Der Typ dieser Struktur ist FIELD_INFO.
Die im fieldCallBack-Element dieser Struktur angegebene Rückruffunktion wird während dieses Ioctl-Vorgangs für jedes Element in der Liste aufgerufen. Wenn sie aufgerufen wird, wird diese linkList-Struktur mit den für den Listeneintrag ausgefüllten Membern zusammen mit dem Inhalt des Context-Elements übergeben.
DBG_DUMP_LIST sollte in Optionen festgelegt werden, um dieses Ioctl anzuweisen, die Liste zu durchlaufen.
Context
Gibt einen Zeiger an, der an die Rückruffunktion im CallbackRoutine-Member und an die Rückruffunktionen im fieldCallBack-Element der Elemente linkList und Fields übergeben wird.
pBuffer
Gibt einen Puffer an, der Informationen über das Symbol empfängt. Dieser Puffer wird nur verwendet, wenn das flag DBG_DUMP_COPY_TYPE_DATA unter Optionen festgelegt ist. Die Größe dieses Puffers wird in BufferSize angegeben.
CallbackRoutine
Gibt eine Rückruffunktion an, die von der Engine aufgerufen wird. Die Engine stellt die Rückruffunktion mit Informationen zum Symbol und seinen Membern bereit.
nFields
Gibt die Anzahl der Einträge im Fields-Array an.
Fields
Gibt ein Array von FIELD_INFO Strukturen an, die das Verhalten dieses Vorgangs für einzelne Member des angegebenen Symbols steuern. Weitere Informationen finden Sie unter FIELD_INFO.
ModBase
Empfängt den Speicherort im Speicher des Ziels für den Anfang des Moduls, das das Symbol enthält.
TypeId
Empfängt die Typ-ID des Symbols.
TypeSize
Empfängt die Größe des Symbols in Bytes im Speicher des Ziels.
BufferSize
Gibt die Größe des pBuffer-Puffers in Bytes an.
fPointer
Empfängt einen booleschen Wert, der angibt, ob das Symbol ein Zeiger ist. fPointer ist FALSE , wenn das Symbol kein Zeiger ist. Dies ist 1, wenn das Symbol ein 32-Bit-Zeiger ist, und 3, wenn das Symbol ein 64-Bit-Zeiger ist.
fArray
Empfängt einen booleschen Wert, der angibt, ob das Symbol ein Array ist. fArray ist FALSE , wenn das Symbol kein Array ist, und TRUE , wenn es ist.
fStruct
Empfängt einen booleschen Wert, der angibt, ob das Symbol eine Struktur ist. fStruct ist FALSE , wenn das Symbol keine Struktur ist, und TRUE , wenn es ist.
fConstant
Empfängt einen booleschen Wert, der angibt, ob das Symbol eine Konstante ist. fConstant ist FALSE , wenn das Symbol keine Konstante ist, und TRUE , wenn es ist.
Reserved
Hinweise
Die Parameter für den IG_DUMP_SYMBOL_INFO Ioctl-Vorgang sind die Elemente der SYM_DUMP_PARAM-Struktur.
Dieser Ioctl-Vorgang sucht die Modulinformationen für das Symbol und lädt nach Möglichkeit Modulsymbole.
Wenn nFields null ist und DBG_DUMP_CALL_FOR_EACH in Optionen festgelegt ist, wird die in CallbackRoutine angegebene Rückruffunktion für jedes Feld im Symbol aufgerufen.
Wenn nFields ungleich 0 ist und DBG_DUMP_CALL_FOR_EACH in Optionen festgelegt ist, werden Rückrufe nur für die Felder durchgeführt, die dem fName-Member eines der Fields-Elemente entsprechen. Wenn ein Feld mit einem fName-Member übereinstimmt und das fieldCallBack-Element nicht NULL ist, wird die Rückruffunktion in fieldCallBack aufgerufen. wenn es NULL ist, wird stattdessen die Rückruffunktion in CallbackRoutine aufgerufen.
Die DBG_DUMP_XXX-Bitflags werden vom Options-Member der SYM_DUMP_PARAM-Struktur verwendet, um das Verhalten des IG_DUMP_SYMBOL_INFOIoctl-Vorgangs zu steuern.
Die folgenden Flags können vorhanden sein.
Flag | Auswirkung |
---|---|
DBG_DUMP_NO_INDENT | Member werden in der Ausgabe nicht eingerückt. |
DBG_DUMP_NO_OFFSET | Offsets werden nicht gedruckt. |
DBG_DUMP_VERBOSE | Ausführliche Ausgabe |
DBG_DUMP_CALL_FOR_EACH | Für jeden Member wird eine Rückruffunktion aufgerufen. |
DBG_DUMP_LIST | Das Symbol ist ein Eintrag in einer verknüpften Liste, und der IG_DUMP_SYMBOL_INFO Ioctl-Vorgang wird diese Liste durchlaufen. Die Beschreibung des Elements, das auf das nächste Element in der Liste verweist, wird vom linkList-Element der SYM_DUMP_PARAM-Struktur angegeben. |
DBG_DUMP_NO_PRINT | Es wird nichts gedruckt (es werden nur Rückruffunktionen aufgerufen und Datenkopien ausgeführt). |
DBG_DUMP_GET_SIZE_ONLY | Der Ioctl-Vorgang gibt nur die Größe des Symbols zurück. Es werden keine Memberinformationen ausgegeben oder Rückruffunktionen aufgerufen. |
DBG_DUMP_COMPACT_OUT | Zeilen newlines werden nicht nach jedem Member gedruckt. |
DBG_DUMP_ARRAY | Das Symbol ist ein Array. Die Anzahl der Elemente im Array wird durch die Elementgröße listLink-> der SYM_DUMP_PARAM-Struktur angegeben. |
DBG_DUMP_ADDRESS_OF_FIELD | Der Wert von addr ist tatsächlich die Adresse des Members listLink->fName der SYM_DUMP_PARAM-Struktur und nicht der Anfang des Symbols. |
DBG_DUMP_ADDRESS_AT_END | Der Wert von addr ist tatsächlich die Adresse am Ende des Symbols und nicht der Anfang des Symbols. |
DBG_DUMP_COPY_TYPE_DATA | Der Wert des Symbols wird in das Element pBuffer kopiert. Dies kann nur für primitive Typen (z. B. ULONG oder PVOID) verwendet werden. Sie kann nicht mit Strukturen verwendet werden. |
DBG_DUMP_READ_PHYSICAL | Der Wert des Symbols wird direkt aus dem physischen Speicher des Ziels gelesen. |
DBG_DUMP_FUNCTION_FORMAT |
Beim Formatieren eines Symbols mit einem Funktionstyp wird das Funktionsformat verwendet, z. B. function(arg1, arg2, ...)
|
DBG_DUMP_BLOCK_RECURSE | Rekursieren durch geschachtelte Strukturen; folgen Sie jedoch nicht den Zeigern. |
Darüber hinaus kann das Ergebnis des Makros DBG_DUMP_RECUR_LEVEL(Level) der Bitmenge hinzugefügt werden, um anzugeben, wie tief in Strukturen rekursiert werden soll. Die Ebene kann eine Zahl zwischen 0 und 15 sein.
Die DBG_DUMP_FIELD_XXX-Bitflags werden vom fOptions-Member der FIELD_INFO-Struktur verwendet, um das Verhalten des IG_DUMP_SYMBOL_INFOIoctl-Vorgangs zu steuern.
Die folgenden Flags können vorhanden sein.
Flag | Auswirkung |
---|---|
DBG_DUMP_FIELD_CALL_BEFORE_PRINT | Die Rückruffunktion wird vor dem Drucken des Members aufgerufen. |
DBG_DUMP_FIELD_NO_CALLBACK_REQ | Es wird keine Rückruffunktion aufgerufen. |
DBG_DUMP_FIELD_RECUR_ON_THIS | Untergruppen des Members werden verarbeitet. |
DBG_DUMP_FIELD_FULL_NAME | fName muss vollständig übereinstimmen, anstatt nur über ein übereinstimmende Präfix zu verfügen, damit der Member verarbeitet werden kann. |
DBG_DUMP_FIELD_ARRAY | Drucken von Arrayelementen eines Arrayelements. |
DBG_DUMP_FIELD_COPY_FIELD_DATA | Der Wert des Members wird in pBuffer kopiert. |
DBG_DUMP_FIELD_RETURN_ADDRESS |
Während eines Rückrufs oder wenn Ioctl zurückgibt, FIELD_INFO. address-Member enthält die Adresse des Elements des Symbols.
Wenn für den Typ keine Adresse angegeben wird, FIELD_INFO. address enthält den Gesamtoffset des Elements vom Anfang des Typs. |
DBG_DUMP_FIELD_SIZE_IN_BITS | Geben Sie für ein Bitfeld den Offset und die Größe in Bits anstelle von Bytes zurück. |
DBG_DUMP_FIELD_NO_PRINT | Drucken Sie diesen Member nicht (nur die Rückruffunktion wird aufgerufen, und Es werden Datenkopien ausgeführt). |
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING | Wenn der Member ein Zeiger ist, wird er als Zeichenfolge, ANSI-Zeichenfolge, WCHAR-Zeichenfolge, MULTI-Zeichenfolge oder GUID ausgegeben. |
Darüber hinaus kann das Ergebnis des Makros DBG_DUMP_RECUR_LEVEL(Level) der Bitmenge hinzugefügt werden, um anzugeben, wie tief in Strukturen rekursiert werden soll. Die Ebene kann eine Zahl zwischen 0 und 15 sein.
Anforderungen
Anforderung | Wert |
---|---|
Header | wdbgexts.h (include Wdbgexts.h, Dbgeng.h) |