相关疑难解决方法(0)

如何知道原生方法是安全/不安全的?

我实现了这个函数:GetSystemPowerStatusExGetSystemPowerStatusEx2

根据MSDN上的这篇文章,我应该创建一个根据我将使用的函数命名的类,但我的问题是:我怎么知道我应该把哪个类放入GetSystemPowerStatusEx和GetSystemPowerStatusEx2?

我迷路了...

感谢帮助.

[编辑]我的问题是:这三个类名中哪一个对我来说是好的(NativeMethods/SafeNativeMethods/UnsafeNativeMethods)?

这些方法应该属于以下类之一:

NativeMethods - 此类不会抑制非托管代码权限的堆栈遍历.(System.Security.SuppressUnmanagedCodeSecurityAttribute不能应用于此类.)此类适用于可在任何地方使用的方法,因为将执行堆栈遍历.

SafeNativeMethods - 此类禁止堆栈遍历非托管代码权限.(System.Security.SuppressUnmanagedCodeSecurityAttribute应用于此类.)此类适用于任何人都可以安全调用的方法.这些方法的调用者不需要执行完整的安全性审查,以确保使用是安全的,因为这些方法对任何调用者都是无害的.

UnsafeNativeMethods - 此类禁止堆栈遍历非托管代码权限.(System.Security.SuppressUnmanagedCodeSecurityAttribute应用于此类.)此类适用于潜在危险的方法.这些方法的任何调用者都必须执行完整的安全性检查,以确保使用是安全的,因为不会执行堆栈遍历.

c# interop

13
推荐指数
1
解决办法
3938
查看次数

将P/Invokes移动到NativeMethods类因为它是P/Invoke方法消息

有人可以建议我该如何处理这条消息?

CA1060将P/Invokes移动到NativeMethods类因为它是P/Invoke方法,所以应该在名为NativeMethods,SafeNativeMethods或UnsafeNativeMethods的类中定义'UControl.InternetGetConnectedState(out int,int)'.兆.UControl.xaml.cs 33

码:

namespace Mega
{
    /// <summary>
    /// Interaction logic for UserControl1.xaml
    /// </summary>
    public partial class UControl 
    { 
        [DllImport("wininet.dll")]
        private extern static bool InternetGetConnectedState(out int description, int reservedValue);
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# pinvoke

3
推荐指数
1
解决办法
5155
查看次数

标签 统计

c# ×2

.net ×1

interop ×1

pinvoke ×1