Compartir a través de


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

El método GetNext busca un objeto DebugFailureAnalysis para la siguiente entrada fa, después de una entrada fa determinada, que cumple las condiciones especificadas por los parámetros Tag y TagMask .

Sintaxis

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

Parámetros

[in] Entry

Puntero a una estructura de FA_ENTRY . La búsqueda se inicia después de esta entrada de FA. Si este parámetro es NULL, se inicia al principio de la colección de entradas fa.

[in] Tag

Valor de la enumeración FA_TAG .

[in] TagMask

Máscara que restringe la búsqueda a un subconjunto de todas las etiquetas posibles. Vea la sección Comentarios. Para buscar en todas las etiquetas posibles, establezca este parámetro en DEBUG_FLR_MASK_ALL.

Valor devuelto

Si el objeto DebugFailureAnalysis tiene una entrada FA, después de la entrada especificada, que cumple las condiciones, este método devuelve un puntero a la estructura FA_ENTRY . De lo contrario, este método devuelve NULL.

Comentarios

Este método busca una estructura de FA_ENTRY que cumpla esta condición:

entry-Tag> & TagMask == Tag

Las etiquetas se definen en extsfns.h como valores de la enumeración DEBUG_FLR_PARAM_TYPE , que también se denomina enumeración FA_TAG . Las etiquetas se organizan en grupos para que pueda usar TagMask para buscar en un grupo determinado. Por ejemplo, hay un grupo de etiquetas relacionadas con errores de grupo. Los valores numéricos asignados a las etiquetas de este grupo se encuentran en el intervalo 0x400, 0x401 ... 0x406. Cada FA_ENTRY que tenga una etiqueta en este grupo cumple la siguiente condición:

entry->Tag & 0xFFFFFF00 == 0x400

En el fragmento de código siguiente se muestra una parte de la enumeración 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,
...

Ejemplos

Ejemplo 1

En el ejemplo siguiente se muestra cómo buscar todas las entradas de análisis de errores que tienen una etiqueta igual a DEBUG_FLR_MANAGED_EXCEPTION_OBJECT. Supongamos que pAnalysis es un puntero a una interfaz 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);
}

Ejemplo 2

En el ejemplo siguiente se muestra cómo buscar todas las entradas de fa que tienen etiquetas en el grupo Grupo. Recuerde que las etiquetas del grupo de grupos tienen valores en el intervalo 0x400, 0x401, ... 0x406. Supongamos que pAnalysis es un puntero a una interfaz 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);
}

Ejemplo 3

Puede crear sus propias etiquetas personalizadas en el intervalo 0xA0000001 a través de 0xAFFFFFFF.

En el ejemplo siguiente se muestra cómo buscar todas las entradas de análisis de errores que tienen etiquetas personalizadas. En otras palabras, el código busca todas las entradas con etiquetas que cumplen esta condición:

entry->Tag & 0xF0000000 == 0xA0000000

Entradas que tienen etiquetas 0xA0000001, 0xA0000002, ... 0xAFFFFFF cumplir la condición.


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 Value
Plataforma de destino Escritorio
Encabezado extsfns.h

Consulte también

Get

IDebugFailureAnalysis2

NextEntry

Escribir un complemento de extensión de análisis para ampliar !analyze

_EFN_Analyze