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
Escribir un complemento de extensión de análisis para ampliar !analyze