我想知道是否有人对使用DLLImport/PInvoke从托管的.Net代码调用Win32方法的负面影响有一个合理的解释或概述?
我计划使用各种Win32方法,并希望更加深入地了解这样做的负面影响。
谢谢,
Brian。
我想知道是否有人对使用DLLImport/PInvoke从托管的.Net代码调用Win32方法的负面影响有一个合理的解释或概述?
我计划使用各种Win32方法,并希望更加深入地了解这样做的负面影响。
谢谢,
Brian。
[SuppressUnmanagedCodeSecurity]
添加到P/Invoke函数定义中(请参见MSDN-SuppressUnmanagedCodeSecurityAttribute)。这可以防止运行时进行堆栈遍历以确保调用者具有UnmanagedCode权限。当然,在添加此属性之前,请确保您理解安全性方面的影响。以下是我对PInvoke的一些问题的看法:
如果您计划使用大量未托管的函数,我建议创建混合DLL(本机和托管混合程序集),而不是声明一堆PInvokes。
[SuppressUnmanagedCodeSecurity]
不再需要(事实上,它已从.NET Core中完全删除):https://github.com/dotnet/runtime/issues/4514 - Dai