0

我们知道.NET框架类封装了Win32 API,现在我想知道.NET框架类是如何调用Win32 API的?

到目前为止我知道的方式:

  1. 通过 P/Invoke
  2. VC++/命令行
  3. 1 和 2

有人知道答案吗?

4

1 回答 1

3

如果需要调用非托管 API,大多数框架类都使用 P/Invoke。在 System.Windows.Forms 上启动 Reflector,您将看到名为 NativeMethods 和 UnsafeNativeMethods 的类,它们执行大量P/Invoke。同样,System.Drawing 有一个 SafeNativeMethods 类,它声明了所有 GDI+ P/Invokes。

您没有提到的另一个主要互操作方法是 COM 互操作。我不知道它在框架中的使用范围有多广,但我猜想一些 WMI (System.Management) 的东西会大量使用它,当然还有 WinForms ActiveX 支持。

于 2009-11-13T05:22:35.230 回答