我们知道.NET框架类封装了Win32 API,现在我想知道.NET框架类是如何调用Win32 API的?
到目前为止我知道的方式:
- 通过 P/Invoke
- VC++/命令行
- 1 和 2
有人知道答案吗?
如果需要调用非托管 API,大多数框架类都使用 P/Invoke。在 System.Windows.Forms 上启动 Reflector,您将看到名为 NativeMethods 和 UnsafeNativeMethods 的类,它们执行大量P/Invoke。同样,System.Drawing 有一个 SafeNativeMethods 类,它声明了所有 GDI+ P/Invokes。
您没有提到的另一个主要互操作方法是 COM 互操作。我不知道它在框架中的使用范围有多广,但我猜想一些 WMI (System.Management) 的东西会大量使用它,当然还有 WinForms ActiveX 支持。