Partager via


IDebugFailureAnalysis ::GetNext, méthode (extsfns.h)

La méthode GetNext recherche dans un objet DebugFailureAnalysisl’entrée FA suivante, après une entrée FA donnée, qui remplit les conditions spécifiées par les paramètres Tag et TagMask .

Syntaxe

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

Paramètres

[in] Entry

Pointeur vers une structure FA_ENTRY . La recherche démarre après cette entrée fa. Si ce paramètre a la valeur NULL, commence au début de la collection d’entrées FA.

[in] Tag

Valeur dans l’énumération FA_TAG .

[in] TagMask

Masque qui limite la recherche à un sous-ensemble de toutes les balises possibles. Consultez la section Notes. Pour rechercher toutes les balises possibles, définissez ce paramètre sur DEBUG_FLR_MASK_ALL.

Valeur retournée

Si l’objet DebugFailureAnalysis a une entrée FA, après l’entrée donnée, qui remplit les conditions, cette méthode retourne un pointeur vers la structure FA_ENTRY . Sinon, cette méthode retourne NULL.

Remarques

Cette méthode recherche une structure FA_ENTRY qui remplit cette condition :

entry-Tag> & TagMask == Tag

Les balises sont définies dans extsfns.h en tant que valeurs de l’énumération DEBUG_FLR_PARAM_TYPE , également appelée énumération FA_TAG . Les balises sont organisées en groupes afin que vous puissiez utiliser TagMask pour effectuer une recherche dans un groupe particulier. Par exemple, il existe un groupe de balises liés aux erreurs de pool. Les valeurs numériques affectées aux balises de ce groupe se trouvent dans la plage 0x400, 0x401 ... 0x406. Chaque FA_ENTRY qui a une balise dans ce groupe remplit la condition suivante :

entry->Tag & 0xFFFFFF00 == 0x400

L’extrait de code suivant montre une partie de l’énumération FA_TAG .

...
// 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,
...

Exemples

Exemple 1

L’exemple suivant montre comment rechercher toutes les entrées d’analyse d’échec dont la balise est égale à DEBUG_FLR_MANAGED_EXCEPTION_OBJECT. Supposons que pAnalysis soit un pointeur vers une interface IDebugFailureAnalysis2 .

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);
}

Exemple 2

L’exemple suivant montre comment rechercher toutes les entrées fa qui ont des balises dans le groupe Pool. Rappelez-vous que les balises du groupe Pool ont des valeurs dans la plage 0x400, 0x401, ... 0x406. Supposons que pAnalysis soit un pointeur vers une interface IDebugFailureAnalysis2 .

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);
}

Exemple 3

Vous pouvez créer vos propres étiquettes personnalisées dans la plage 0xA0000001 via 0xAFFFFFFF.

L’exemple suivant montre comment rechercher toutes les entrées d’analyse des échecs qui ont des balises personnalisées. En d’autres termes, le code recherche toutes les entrées avec des balises qui répondent à cette condition :

entry->Tag & 0xF0000000 == 0xA0000000

Entrées qui ont des balises 0xA0000001, 0xA0000002, ... 0xAFFFFFF remplissent la condition.


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);
}

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête extsfns.h

Voir aussi

Get

IDebugFailureAnalysis2

NextEntry

Écriture d’un plug-in d’extension d’analyse pour Étendre !analyze

_EFN_Analyze