msdn说P/Invoke方法可以安全地暴露给任何应用程序,并且没有任何副作用,应该放在名为SafeNativeMethods的类中。安全和不安全的win32方法
and P/Invoke方法不能安全地调用,并且可能导致副作用的方法应放在名为UnsafeNativeMethods的类中。
我认为这是受windows api的影响。但是我怎么知道一个方法是否被认为是安全或不安全的?
有没有这样的工具或在线参考知道?哪里写的规则,使Windows API方法安全或usnafe?
msdn说P/Invoke方法可以安全地暴露给任何应用程序,并且没有任何副作用,应该放在名为SafeNativeMethods的类中。安全和不安全的win32方法
and P/Invoke方法不能安全地调用,并且可能导致副作用的方法应放在名为UnsafeNativeMethods的类中。
我认为这是受windows api的影响。但是我怎么知道一个方法是否被认为是安全或不安全的?
有没有这样的工具或在线参考知道?哪里写的规则,使Windows API方法安全或usnafe?
我认为这受到windows api的影响。
不完全是。它指的是您通过DllImport
提供访问的任何本机代码。
但我怎么能找出一种方法是否被认为是安全的或不安全的?
你知道你的功能在做什么。否则,你不会使它可用。然后考虑一下,只有访问管理和安全的本地代码的恶意用户,如果还允许访问您正在查看的功能,那么这个恶意用户是否会弄糟程序(或更糟糕的情况)。
几乎没有任何函数会将指针实际暴露为指针,这些指针是不安全的,但反过来不是这样,不涉及指针的函数也可能不安全。
请注意,如果你不处理任何不信任的代码,你可以把一切都放在一个NativeMethods
类,而不是担心安全或不安全。
它完全是任意的,在.NET Framework中的用法只反映了特定的程序员启动了源代码文件。有时候最好将参数声明为指针,而不是经常使用,所以需要* unsafe *关键字。其余的只是没关系。类名也无关紧要,微软程序员必须遵循所有.NET团队成员必须遵循的编码准则,并提醒他们使用代码分析工具使其错误。同样,请遵循* your *团队使用的准则。 –
谢谢,阅读你的评论和答案就像阅读千篇一书的学习总结。 – Meska