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