Partager via


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

La méthode GetNext recherche un objet DebugFailureAnalysis pour l'd’entréeFA suivante, après une entrée fa donnée, qui répond aux 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 commence après cette entrée fa . Si ce paramètre est NULL, le début de la collection d’entrées FA.

[in] Tag

Valeur de l’énumération FA_TAG.

[in] TagMask

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

Valeur de retour

Si l’objet DebugFailureAnalysis a une entrée fa , après l’entrée donnée, qui satisfait aux 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 répond à cette condition :

entrée ->Tag & TagMask == Tag

Les balises sont définies dans extsfns.h comme valeurs de l’énumération DEBUG_FLR_PARAM_TYPE, également appelée énumération FA_TAG. Les balises sont organisées dans des groupes afin que vous puissiez utiliser TagMask pour effectuer une recherche dans un groupe particulier. Par exemple, il existe un groupe de balises liées 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 satisfait à 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 pAnalysis est 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 de pools. Rappelez-vous que les balises du groupe pool ont des valeurs dans la plage 0x400, 0x401, ... 0x406. Supposons pAnalysis est 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 balises 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 satisfaire 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);
}

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête extsfns.h

Voir aussi

Obtenir

IDebugFailureAnalysis2

NextEntry

écriture d’un plug-in d’extension d’analyse pour étendre !analyser

_EFN_Analyze