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
Écriture d’un plug-in d’extension d’analyse pour Étendre !analyze