IDebugFailureAnalysis::GetNext 方法 (extsfns.h)
GetNext 方法在 DebugFailureAnalysis 对象中搜索给定 FA 条目后满足 Tag 和 TagMask 参数指定条件的下一个 FA 条目。
语法
PFA_ENTRY GetNext(
[in] PFA_ENTRY Entry,
[in] FA_TAG Tag,
[in] FA_TAG TagMask
);
参数
[in] Entry
指向 FA_ENTRY 结构的指针。 搜索在此 FA 条目之后开始。 如果此参数为 NULL,则 从 FA 条目集合的开头开始。
[in] Tag
FA_TAG 枚举中的值。
[in] TagMask
将搜索限制为所有可能标记的子集的掩码。 请参阅“备注”。 若要搜索所有可能的标记,请将此参数设置为 DEBUG_FLR_MASK_ALL。
返回值
如果 DebugFailureAnalysis 对象在给定条目之后具有满足条件的 FA 条目,则此方法返回指向 FA_ENTRY 结构的指针。 否则,此方法返回 NULL。
注解
此方法搜索满足此条件 的FA_ENTRY 结构:
entry-Tag> & TagMask == 标记
标记在 extsfns.h 中定义为 DEBUG_FLR_PARAM_TYPE 枚举(也称为 FA_TAG 枚举)的值。 标记按组排列,以便可以使用 TagMask 在特定组中搜索。 例如,有一组与池错误相关的标记。 分配给此组中标记的数值在0x400范围内,0x401...0x406。 此组中具有标记的每个 FA_ENTRY 都满足以下条件:
entry->Tag & 0xFFFFFF00 == 0x400
以下代码片段显示了 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,
...
示例
示例 1
以下示例演示如何查找标记等于 DEBUG_FLR_MANAGED_EXCEPTION_OBJECT 的所有失败分析条目。 假设 pAnalysis
是指向 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);
}
示例 2
以下示例演示如何查找池组中具有标记的所有 FA 条目。 回想一下,池组中的标记的值在 0x400、0x401...0x406。 假设 pAnalysis
是指向 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);
}
示例 3
可以在0xA0000001到0xAFFFFFFF的范围内创建自己的自定义标记。
以下示例演示如何查找具有自定义标记的所有失败分析条目。 换句话说,代码查找具有满足此条件的标记的所有条目:
entry->Tag & 0xF0000000 == 0xA0000000
具有标记的条目0xA0000001、0xA0000002...0xAFFFFFF满足条件。
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);
}
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | extsfns.h |