1

我目前正在做一些 Windows 7 内核调试工作,并且对于我正在查看的一些结构,而不是给出结构名称,windbg 只是显示<unnamed-tag>

这是 IRP 结构的示例: 在此处输入图像描述

我猜这个结构因此被它的名字以外的东西引用,但经过一些阅读,我似乎无法找到对此的解释。谁能解释这个未命名的标签是什么意思?

谢谢

更新 经过更多阅读,我认为未命名标签实际上是结构中的嵌入联合,没有名称,根据http://www.rowleydownload.co.uk/arm/documentation/gnu/gcc /Unnamed-Fields.html在 C 代码中是合法的。

如果这是正确的,我很好奇 Windbg 是如何知道如何将这些结构重新组合在一起的。

4

2 回答 2

2

没错,它是无名工会。windbg 只是显示与 union 定义的所有可能格式相同的地址,用户有责任判断程序正在引用哪个字段,通常有一个“上下文”附加到指定联合定义的类型的结构上,例如有点在一个标志文件中。

于 2013-08-01T15:20:55.887 回答
2

类型dt _IRP -b

-b

递归显示块。如果显示的结构包含子结构,则递归扩展至任意深度并完整显示。仅当指针在原始结构中而不是在子结构中时才会扩展指针。

来源:https ://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/dt--display-type-

于 2020-12-15T10:45:48.093 回答