我目前正在做一些 Windows 7 内核调试工作,对于我正在查看的许多结构,windbg 没有给出结构名称,而是简单地显示 <unnamed-tag>
。
这是 IRP 结构的示例:
我猜这个结构因此被它的名字以外的东西引用,但是在阅读了一些之后我似乎找不到对此的解释。任何人都可以解释这个未命名标签的含义吗?
谢谢
更新 经过更多阅读,我认为未命名标签实际上是没有名称的结构中的嵌入式联合,根据 http://www.rowleydownload.co.uk/arm/documentation/gnu/gcc/Unnamed-Fields.html在 C 代码中是合法的。
如果这是正确的,我很好奇 Windbg 是如何知道如何重新将这些结构重建在一起的。
最佳答案
是的,它是未命名的联合体。 windbg 简单地显示与 union 定义的所有可能格式相同的地址,用户有责任判断程序正在引用哪个字段,通常有一个“上下文”附加到指定定义联合的类型的结构,例如有点在标志归档中。
关于Windows 调试符号 <unnamed-tag>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17988212/