Freigeben über


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)

Weitere Informationen

DBG_DUMP_XXX

FIELD_INFO

IG_DUMP_SYMBOL_INFO Fehlercodes

Ioctl