【问题标题】:Need to get List of C++ Kernel Types?需要获取 C++ 内核类型列表?
【发布时间】:2011-04-22 05:16:54
【问题描述】:

尊敬的!!

我需要完整的内核类型列表,例如“CRITICAL_SECTION”、“_LARGE_INTEGER”或“_SECURITY_ATTRIBUTES”。基本上我是从一些调试 SDK 中提取给定类名的类的所有数据成员(现在使用 DIA SDK 或 DbgHelp)。

现在,如果一个类型(比如类或结构)包含我上面提到的一些内核级对象,它也会提取(该类型的详细信息,例如数据成员及其类型)这些类型。

我需要阻止提取内核级对象和类型。只有我需要那些用户定义的类型,并且那些只包含具有本地类型的数据成员,这些类型又是一些用户定义的类型(如 int、float、double、char、std::string 或可以是 SomeUDT obj)。

还有其他出路吗...?

问候 乌斯曼

【问题讨论】:

  • 我无法理解你的问题。 (RTL_)CRITICAL_SECTION 纯粹是用户模式类型,而 SECURITY_ATTRIBUTES 仅是用户模式 ​​ Win32。 “块提取”不是解决方案,因为如果一个结构嵌入到另一个结构中,您不能只是将其移除。如果您有指向结构的指针,只需将其替换为 void * 或其他内容即可。
  • 我们可以跳过该类型的提取。如果我们有完整的内核对象列表(即用户模式和 Win32 内核类型),我们可以限制从该列表中提取匹配的类型。(即包含内核用户模式类型的列表)。
  • 你在这里没有任何意义。 “Win32 内核类型”没有符号,也没有“内核用户模式类型”。你想做什么,更重要的是为什么?
  • wj:实际上我正在实现一个测试自动化框架(功能驱动测试)。这与我们可能观察到的 PUnit 或 NUnit 框架完全不同(这些需要编写代码来测试某些东西)。其他细节我不会在这里指定,因为那将是一个巨大的列表。简而言之,我需要在 RUNTIME 调用方法。只需从 GUI 中选择方法并将其与一些数据集绑定,最后需要调用它。我需要与一些 GUI(而不是代码)进行交互,其中将显示每个函数签名。我将其中一个命令执行。
  • 这将是运行时调用而不是编译时间。为此,我需要完整的提取函数(整个签名)列表。现在该签名可能包含一些用户定义的数据类型作为参数的对象。这需要在运行时用一些数据填充该对象。我这样做是通过使用 void* 引用的 malloc 创建无名块,然后用一些数据填充该块。现在如果这里对应的对象具有内核级对象(比如 CRITICAL_SECTION),我不会在运行时创建该内核级对象并绑定带有数据的对象。

标签: c++ debugging visual-c++ kernel dbghelp


【解决方案1】:

查看Windows kernel dev的最新文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多