我目前正在做一些Windows7内核调试工作,对于我正在查看的许多结构,windbg只是显示<unnamed-tag>
,而不是给出结构名称。
下面是IRP结构的一个示例:
因此,我猜想这个结构是由它的名字以外的其他东西引用的,但是读了一些以后,我似乎找不到对此的解释。有人能解释一下这个无名标签是什么意思吗?
谢谢
Update经过更多的阅读后,我认为未命名的标签实际上是嵌入在结构中的没有名称的联合,根据http://www.rowleydownload.co.uk/arm/documentation/gnu/gcc/Unnamed-Fields.html,这在C代码中是合法的。
如果这是正确的,我很好奇Windbg是如何重新构建结构的。
发布于 2013-08-01 07:20:55
是的,这是无名的工会。windbg只显示与union定义的所有可能的格式相同的地址,用户有责任判断程序引用的是哪个字段,通常在结构上附加一个“上下文”,指定定义的是哪种类型的联合,例如在一个标志中的一个位。
发布于 2020-12-15 02:45:48
dt _IRP -b
型
-b 递归显示块。如果显示的结构包含子结构,则递归展开到任意深度,并全部显示。指针只有在原来的结构中,而不是在子结构中才会展开。
来源:https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/dt--display-type-
https://stackoverflow.com/questions/17988212
复制