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
Schreiben eines Analyseerweiterungs-Plug-Ins zum Erweitern von !analyze