Compartilhar via


Método IDebugFailureAnalysis::GetNext (extsfns.h)

O método GetNext pesquisa um objeto DebugFailureAnalysis para a próxima entrada fa, após uma determinada entrada FA, que satisfaz as condições especificadas pelos parâmetros Tag e TagMask .

Sintaxe

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

Parâmetros

[in] Entry

Um ponteiro para uma estrutura FA_ENTRY . A pesquisa começa após essa entrada fa. Se esse parâmetro for NULL, o começará no início da coleção de entradas FA.

[in] Tag

Um valor na enumeração FA_TAG .

[in] TagMask

Uma máscara que restringe a pesquisa a um subconjunto de todas as marcas possíveis. Consulte Observações. Para pesquisar todas as marcas possíveis, defina esse parâmetro como DEBUG_FLR_MASK_ALL.

Retornar valor

Se o objeto DebugFailureAnalysis tiver uma entrada FA, após a entrada fornecida, que atenda às condições, esse método retornará um ponteiro para a estrutura FA_ENTRY . Caso contrário, esse método retornará NULL.

Comentários

Esse método procura uma estrutura FA_ENTRY que satisfaça essa condição:

entry-Tag> & TagMask == Tag

As marcas são definidas em extsfns.h como valores da enumeração DEBUG_FLR_PARAM_TYPE , que também é chamada de enumeração FA_TAG . As marcas são organizadas em grupos para que você possa usar TagMask para pesquisar em um grupo específico. Por exemplo, há um grupo de marcas relacionadas a erros de pool. Os valores numéricos atribuídos às marcas neste grupo estão no intervalo 0x400, 0x401 ... 0x406. Cada FA_ENTRY que tem uma marca neste grupo satisfaz a seguinte condição:

entry->Tag & 0xFFFFFF00 == 0x400

O snippet de código a seguir mostra uma parte da enumeração 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,
...

Exemplos

Exemplo 1

O exemplo a seguir mostra como localizar todas as entradas de análise de falha que têm uma marca igual a DEBUG_FLR_MANAGED_EXCEPTION_OBJECT. Suponha que pAnalysis seja um ponteiro para uma 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);
}

Exemplo 2

O exemplo a seguir mostra como localizar todas as entradas fa que têm marcas no grupo Pool. Lembre-se de que as marcas no grupo Pool têm valores no intervalo 0x400, 0x401, ... 0x406. Suponha que pAnalysis seja um ponteiro para uma 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);
}

Exemplo 3

Você pode criar suas próprias marcas personalizadas no intervalo 0xA0000001 por meio de 0xAFFFFFFF.

O exemplo a seguir mostra como localizar todas as entradas de análise de falha que têm marcas personalizadas. Em outras palavras, o código localiza todas as entradas com marcas que atendem a essa condição:

entry->Tag & 0xF0000000 == 0xA0000000

Entradas que têm marcas 0xA0000001, 0xA0000002, ... 0xAFFFFFF atender à condição.


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

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho extsfns.h

Confira também

Get

IDebugFailureAnalysis2

NextEntry

Gravando um plug-in de extensão de análise para estender !analisar

_EFN_Analyze