IDebugFailureAnalysis::GetNext 方法 (extsfns.h)
GetNext 方法在给定的 FA 条目后搜索 DebugFailureAnalysis 对象以获取下一个 FA 条目,该条目满足 标记 和 TagMask 参数指定的条件。
语法
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 == Tag
标记在 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
可以通过0xAFFFFFFF在范围中创建自己的自定义标记0xA0000001。
以下示例演示如何查找具有自定义标记的所有故障分析条目。 换句话说,代码查找具有满足此条件的标记的所有条目:
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 |