访问Microsoft.Win32.UnsafeNativeMethods?

时间:2010-01-31 02:19:39

标签: c# winapi native

Microsoft在.NET框架中包含了一个非常好的Windows API包装器。它存储在 Microsoft.Win32.UnsafeNativeMethods Microsoft.Win32.SafeNativeMethods Microsoft.Win32.NativeMethods 中。但遗憾的是,它们无法访问,因为他们被宣布为私人。有没有办法轻松访问它们?

4 个答案:

答案 0 :(得分:2)

这些类中的大多数方法定义(如果不是全部)都是具有DllImport属性的extern声明,这些属性通过P / Invoke引用Windows API中的函数。无论这些声明在哪里都无关紧要。您可以创建自己的名为UnsafeNativeMethods或SafeNativeMethods的类,并在其中放置引用相同Windows API函数的声明。您将在pinvoke.net上找到C#的许多Windows API函数的签名。

答案 1 :(得分:1)

这些类中包含的大多数功能都是由.Net框架本身公开的;你应该在进行API调用之前搜索(或在这里询问)。

要回答你的问题,不 您可以做的最好的事情是从Reflector或参考源复制它们。

答案 2 :(得分:1)

为了它的价值我一直认为应该有一个kernel32.interop.dll等静态方法已经DllImport'ed。但我已经根据需要创建了自己的产品。多年来,我发现我很少使用它们,但是当我需要一个尚未导入的API时,它会非常痛苦。

答案 3 :(得分:0)

原因可能是SuppressUnmanagedCodeSecurityAttribute的安全影响。查看Move P/Invokes to NativeMethods class