IDebugFailureAnalysis2::AddExtensionCommand-Methode (extsfns.h)

Die AddExtensionCommand-Methode fügt einem DebugFailureAnalysis-Objekt einen neuen FA-Eintrag hinzu und legt den Datenblock des FA-Eintrags auf einen angegebenen Debuggerbefehl fest.

Syntax

PFA_ENTRY AddExtensionCommand(
       FA_TAG Tag,
  [in] PCSTR  Extension
);

Parameter

Tag

Ein -Wert in der FA_TAG-Enumeration . Der diesem Tag zugeordnete Datentyp muss DEBUG_FA_ENTRY_EXTENSION_CMD oder DEBUG_FA_ENTRY_ANSI_STRING sein.

[in] Extension

Ein Zeiger auf eine NULL-endende ANSI-Zeichenfolge, bei der es sich um den Debuggerbefehl handelt. Ein Beispiel für den Debuggerbefehl ist "!analyze -v".

Rückgabewert

Wenn diese Methode erfolgreich ist, wird ein -Zeiger auf die neue FA_ENTRY-Struktur zurückgegeben. Wenn diese Methode fehlschlägt, wird NULL zurückgegeben.

Hinweise

Diese Methode legt den DataSize-Member der neuen FA_ENTRY-Struktur auf die Länge des Erweiterungsbefehls in Bytes fest, einschließlich des NULL-Abschlusszeichens .

Jedes Tag ist einem der Datentypen in der FA_ENTRY_TYPE-Enumeration zugeordnet. Um den einem Tag zugeordneten Datentyp zu bestimmen, rufen Sie die GetType-Methode der IDebugFAEntryTags-Schnittstelle auf.

Um einen Zeiger auf eine IDebugFAEntryTags-Schnittstelle abzurufen, rufen Sie die GetDebugFATagControl-Methode der IDebugFailureAnalysis2-Schnittstelle auf.

[sperry] Hinweis für Self: Wenn der Datentyp für das angegebene Tag noch nicht festgelegt wurde, legt diese Methode den Datentyp für das Tag fest und korrigiert diesen. Dies wäre der Fall, wenn das DebugFailureAnalysis-Objekt noch keinen FA-Eintrag mit diesem Tag enthält. Wenn das DebugFailureAnalysis-Objekt jedoch bereits über einen FA-Eintrag mit diesem Tag verfügt, ist der Datentyp des Tags festgelegt. Diese Methode erstellt einen neuen FA-Eintrag mit demselben Tag. Was geschieht nun, wenn der Datentyp, den wir in den neuen Datenpuffer schreiben möchten, nicht mit dem Datentyp übereinstimmt, der für dieses Tag korrigiert wurde. Dann sehen wir, ob es in Ordnung ist, den festen Datentyp in den Typ zu umwandeln, den wir schreiben möchten.

Die Umwandlung zwischen ULONG64, ZEIGER und InstructionOffset ist in Ordnung. Die Umwandlung zwischen String und ExtensionCommand ist in Ordnung. ULONG kann nur ULONG sein. STRINGs können nur STRINGs sein.

Frage: Wann wird der Datentyp eines Tags korrigiert? Wird der erste FA-Eintrag mit diesem Tag erstellt?

typedef struct _FA_TAG_PROPS
{
    FA_TAG Tag;
    FA_ENTRY_TYPE Type;
    ULONG Fixed:1;
    ULONG NameAllocated:1;
    ULONG DescriptionAllocated:1;
    PCSTR Name;
    PCSTR Description;
    AnalysisPlugIn *Plugin;
} FA_TAG_PROPS, *PFA_TAG_PROPS;

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile extsfns.h

Weitere Informationen

IDebugFAEntryTags

IDebugFailureAnalysis2

SetExtensionCommand

Schreiben eines Analyseerweiterungs-Plug-Ins zum Erweitern von !analyze

_EFN_Analyze