Condividi tramite


Metodo IDebugFailureAnalysis::GetNext (extsfns.h)

Il metodo GetNext cerca un oggetto DebugFailureAnalysis successivo per la voce fa fa, dopo una determinata voce FA, che soddisfa le condizioni specificate dal tag di e parametri tagmask.

Sintassi

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

Parametri

[in] Entry

Puntatore a una struttura FA_ENTRY. La ricerca inizia dopo questa voce fa . Se questo parametro è NULL, inizia all'inizio della raccolta di voci FA.

[in] Tag

Valore nell'enumerazione FA_TAG.

[in] TagMask

Maschera che limita la ricerca a un subset di tutti i tag possibili. Vedere la sezione Osservazioni. Per cercare tutti i tag possibili, impostare questo parametro su DEBUG_FLR_MASK_ALL.

Valore restituito

Se l'oggetto DebugFailureAnalysis ha una voce FA, dopo la voce specificata, che soddisfa le condizioni, questo metodo restituisce un puntatore alla struttura FA_ENTRY. In caso contrario, questo metodo restituisce NULL.

Osservazioni

Questo metodo cerca una struttura FA_ENTRY che soddisfa questa condizione:

entry- tag>tag & tag == tag

I tag vengono definiti in extsfns.h come valori dell'enumerazione DEBUG_FLR_PARAM_TYPE, denominata anche enumerazione FA_TAG. I tag sono disposti in gruppi in modo da poter usare TagMask per eseguire ricerche all'interno di un determinato gruppo. Ad esempio, è presente un gruppo di tag correlati agli errori del pool. I valori numerici assegnati ai tag in questo gruppo si trovano nell'intervallo 0x400, 0x401 ... 0x406. Ogni FA_ENTRY con un tag in questo gruppo soddisfa la condizione seguente:

entry->Tag & 0xFFFFFF00 == 0x400

Il frammento di codice seguente mostra una parte dell'enumerazione 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,
...

Esempi

esempio 1

Nell'esempio seguente viene illustrato come trovare tutte le voci di analisi degli errori con un tag uguale a DEBUG_FLR_MANAGED_EXCEPTION_OBJECT. Si supponga pAnalysis sia un puntatore a un'interfaccia 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);
}

esempio 2

Nell'esempio seguente viene illustrato come trovare tutte le voci FA con tag nel gruppo Pool. Ricordare che i tag nel gruppo Pool hanno valori nell'intervallo 0x400, 0x401, ... 0x406. Si supponga pAnalysis sia un puntatore a un'interfaccia 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);
}

esempio 3

È possibile creare tag personalizzati nell'intervallo 0xA0000001 tramite 0xAFFFFFFF.

Nell'esempio seguente viene illustrato come trovare tutte le voci di analisi degli errori con tag personalizzati. In altre parole, il codice trova tutte le voci con tag che soddisfano questa condizione:

entry->Tag & 0xF0000000 == 0xA0000000

Voci con tag 0xA0000001, 0xA0000002, ... 0xAFFFFFF soddisfare la condizione.


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

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione extsfns.h

Vedere anche

Ottenere

IDebugFailureAnalysis2

NextEntry

Scrittura di un plug-in dell'estensione di analisi per estendere !analyze

_EFN_Analyze