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