Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Scrittura di un plug-in dell'estensione di analisi per estendere !analyze