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
Gravando um plug-in de extensão de análise para estender !analisar