Freigeben über


IDebugFailureAnalysis::GetNext-Methode (extsfns.h)

Die GetNext-Methode durchsucht ein DebugFailureAnalysis-Objekt nach dem nächsten FA-Eintrag nach einem bestimmten FA-Eintrag, der die durch die Parameter Tag und TagMask angegebenen Bedingungen erfüllt.

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 am Anfang der Auflistung von FA-Einträgen.

[in] Tag

Ein Wert in der FA_TAG-Enumeration .

[in] TagMask

Eine Maske, die die Suche auf eine Teilmenge aller möglichen Tags einschränkt. Siehe Hinweise. Um alle möglichen Tags zu durchsuchen, legen Sie diesen Parameter auf DEBUG_FLR_MASK_ALL fest.

Rückgabewert

Wenn das DebugFailureAnalysis-Objekt über einen FA-Eintrag verfügt, der nach dem angegebenen Eintrag die Bedingungen erfüllt, gibt diese Methode einen Zeiger auf die FA_ENTRY-Struktur zurück. Andernfalls gibt diese Methode NULL zurück.

Hinweise

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-Enumeration definiert, die auch als FA_TAG-Enumeration bezeichnet wird. Die Tags sind 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, liegen 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 über ein Tag mit DEBUG_FLR_MANAGED_EXCEPTION_OBJECT verfügen. Angenommen, es pAnalysis handelt sich um einen Zeiger auf eine IDebugFailureAnalysis2-Schnittstelle .

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, dass die Tags in der Gruppe Pool Werte im Bereich 0x400, 0x401, ... 0x406. Angenommen, es pAnalysis handelt sich um einen Zeiger auf eine IDebugFailureAnalysis2-Schnittstelle .

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 ihre eigenen benutzerdefinierten Tags im Bereich erstellen, der über 0xAFFFFFFF 0xA0000001.

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
Kopfzeile extsfns.h

Weitere Informationen

Get

IDebugFailureAnalysis2

NextEntry

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

_EFN_Analyze