【问题标题】:Is there a way to see the full signature of functions in an unmanaged dll like user32.dll , kernel32.dll?有没有办法在 user32.dll , kernel32.dll 等非托管 dll 中查看函数的完整签名?
【发布时间】:2020-07-21 14:54:33
【问题描述】:

我知道我可以使用dumpbin /exports [filename] 查看 dll 中的函数列表。

有没有办法查看这些函数的签名(我需要什么参数来调用它)?

【问题讨论】:

  • 没有。您需要各种 Windows H 文件才能看到这些文件。非托管代码不像 .NET DLL 那样携带元数据。如果您从 C# 调用事物(如您的标签所示),请查看 pinvoke.net。您应该能够获得足够的信息来调用那里的任何标准 DLL
  • 来自垃圾箱,没有。从 MS 文档来看,是的。
  • @fly:这是不正确的。函数签名携带不同数量的元数据。修饰的 C++ 函数签名对参数类型的整个列表进行编码。该声明,如果为假,则 “非托管代码不会像 .NET DLL 那样携带元数据”
  • 您也可以试试winsiggen 工具。过去对我很好,不知道它是否仍然是最新的。
  • 是的。查看文档和头文件。前者很重要。知道参数的类型很少足以调用函数。您需要了解语义,并了解接口契约。

标签: c# winapi dll unmanaged


【解决方案1】:

user32.dll和kernel32.dll中的函数列表参考官方文档:winuser.h headerprocessthreadsapi.h header

对于一个指定函数的签名,单击函数名称,您将被定向到其文档,您可以在其中找到有关该函数的几乎所有信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2010-10-14
    • 2017-10-16
    相关资源
    最近更新 更多