Compartilhar via


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

O método GetNext pesquisa um objeto DebugFailureAnalysis para o próximo de entrada fa, após uma determinada entrada fa, que satisfaz as condições especificadas pelos parâmetros de Marca 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 esta de entrada da FA. Se esse parâmetro for NULL, o início da coleção de entradas FA será iniciado.

[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 Comentários. Para pesquisar todas as marcas possíveis, defina esse parâmetro como DEBUG_FLR_MASK_ALL.

Valor de retorno

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.

Observações

Esse método procura uma estrutura FA_ENTRY que atenda 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 até 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
da Plataforma de Destino Área de trabalho
cabeçalho extsfns.h

Consulte também

Obter

IDebugFailureAnalysis2

NextEntry

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

_EFN_Analyze