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