Freigeben über


IDebugFailureAnalysis::GetNext-Methode (extsfns.h)

Die GetNext-Methode durchsucht ein DebugFailureAnalysis- -Objekt nach dem nächsten FA-Eintragnach einem bestimmten FA-Eintrag, der bedingungen entspricht, die durch die Tag und TagMask Parameter angegeben werden.

Syntax

PFA_ENTRY GetNext(
  [in] PFA_ENTRY Entry,
  [in] FA_TAG    Tag,
  [in] FA_TAG    TagMask
);

Parameter

[in] Entry

Ein Zeiger auf eine FA_ENTRY Struktur. Die Suche beginnt nach diesem FA-Eintrag. Wenn dieser Parameter NULL-ist, beginnt der Anfang der Auflistung von FA-Einträgen.

[in] Tag

Ein Wert in der FA_TAG-Aufzählung.

[in] TagMask

Eine Maske, die die Suche auf eine Teilmenge aller möglichen Tags beschränkt. Siehe Anmerkungen. Um alle möglichen Tags zu durchsuchen, legen Sie diesen Parameter auf DEBUG_FLR_MASK_ALLfest.

Rückgabewert

Wenn das DebugFailureAnalysis -Objekt einen FA-Eintraghat, der die Bedingungen erfüllt, gibt diese Methode einen Zeiger auf die FA_ENTRY Struktur zurück. Andernfalls gibt diese Methode NULL-zurück.

Bemerkungen

Diese Methode sucht nach einer FA_ENTRY Struktur, die diese Bedingung erfüllt:

entry->Tag & TagMask == Tag

Tags werden in extsfns.h als Werte der DEBUG_FLR_PARAM_TYPE-Aufzählung definiert, die auch als FA_TAG-Aufzählung bezeichnet wird. Die Tags werden in Gruppen angeordnet, sodass Sie TagMask- verwenden können, um innerhalb einer bestimmten Gruppe zu suchen. Beispielsweise gibt es eine Gruppe von Tags im Zusammenhang mit Poolfehlern. Die numerischen Werte, die den Tags in dieser Gruppe zugewiesen sind, befinden sich im Bereich 0x400, 0x401 ... 0x406. Jede FA_ENTRY mit einem Tag in dieser Gruppe erfüllt die folgende Bedingung:

entry->Tag & 0xFFFFFF00 == 0x400

Der folgende Codeausschnitt zeigt einen Teil der FA_TAG Enumeration.

...
// Pool
DEBUG_FLR_POOL_ADDRESS = 0x400,
DEBUG_FLR_SPECIAL_POOL_CORRUPTION_TYPE,
DEBUG_FLR_CORRUPTING_POOL_ADDRESS,
DEBUG_FLR_CORRUPTING_POOL_TAG,
DEBUG_FLR_FREED_POOL_TAG,
DEBUG_FLR_LEAKED_SESSION_POOL_TAG,
DEBUG_FLR_CLIENT_DRIVER,

// Filesystem
DEBUG_FLR_FILE_ID = 0x500,
DEBUG_FLR_FILE_LINE,
...

Beispiele

Beispiel 1

Das folgende Beispiel zeigt, wie Sie alle Fehleranalyseeinträge finden, die ein Tag haben, das DEBUG_FLR_MANAGED_EXCEPTION_OBJECTentspricht. Angenommen, pAnalysis ein Zeiger auf eine IDebugFailureAnalysis2 Schnittstelle ist.

FA_ENTRY entry = pAnalysis->Get(DEBUG_FLR_MANAGED_EXCEPTION_OBJECT);

while(NULL != entry)
{
   // Do something with the entry.

   entry = pAnalysis->GetNext(DEBUG_FLR_MANAGED_EXCEPTION_OBJECT, DEBUG_FLR_MASK_ALL);
}

Beispiel 2

Das folgende Beispiel zeigt, wie Sie alle FA-Einträge mit Tags in der Gruppe "Pool" finden. Erinnern Sie sich an die Tags in der Gruppe "Pool" über Werte im Bereich 0x400, 0x401, ... 0x406. Angenommen, pAnalysis ein Zeiger auf eine IDebugFailureAnalysis2 Schnittstelle ist.

FA_ENTRY entry = pAnalysis->GetNext(NULL, (FA_TAG)0x400, (FA_TAG)0xFFFFFF00);

while(NULL != entry)
{
   // Do something with the entry.

   entry = pAnalysis->GetNext(entry, (FA_TAG)0x400, (FA_TAG)0xFFFFFF00);
}

Beispiel 3

Sie können eigene benutzerdefinierte Tags im Bereich 0xA0000001 über 0xAFFFFFFF erstellen.

Das folgende Beispiel zeigt, wie Sie alle Fehleranalyseeinträge mit benutzerdefinierten Tags finden. Mit anderen Worten: Der Code findet alle Einträge mit Tags, die diese Bedingung erfüllen:

entry->Tag & 0xF0000000 == 0xA0000000

Einträge mit Tags 0xA0000001, 0xA0000002, ... 0xAFFFFFF die Bedingung erfüllen.


FA_ENTRY entry = pAnalysis->GetNext(NULL, (FA_TAG)0xA0000000, (FA_TAG)0xF0000000);

while(NULL != entry)
{
   // Do something with the Entry

   entry = pAnalysis->GetNext(entry, (FA_TAG)0xA0000000, (FA_TAG)0xF0000000);
}

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- extsfns.h

Siehe auch

Abrufen von

IDebugFailureAnalysis2

NextEntry-

Schreiben eines Analysis Extension Plug-Ins zum Erweitern von !analyze

_EFN_Analyze