use*_*755 9 .net c# pinvoke unmanaged managed
我目前正在为非托管dll创建托管包装器.Point是包装器对非托管dll进行TON调用,但本身只输出很少的方法.从我做的研究中,这应该是安全的,但我想确保我得到正确的.基本上这就是我在做的方式.
[SuppressUnmanagedCodeSecurity()]
internal static class SomeAPI
{
[DllImport("base.dll"]
internal static extern bool Somefunc();
[...] Other internal DllImports
}
public class Wrapper : IDisposable
{
[SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
public Wrapper()
{
SomeAPI.SomeFunc();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
[SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
protected override void Dispose(bool disposeManagedResources)
{
SomeAPI.SomeFunc();
}
}
Run Code Online (Sandbox Code Playgroud)
我添加的每个受保护或公共的方法都应该获得[SecurityPermission(SecurityAction.Demand,UnmanagedCode = true)]属性.我的意思是每一个都避免意外的代码路径导致SomeAPI调用.
现在添加到内部或私有的Wrapper的任何方法都是"安全的".这个假设是否正确?
对不起,如果我不清楚.我正在编写包装器,因此它不会重新格式化硬盘驱动器或类似的东西.包装器将在其自己的托管dll中显示(以及其他内容).因为对包装器的一次调用可能导致对非托管dll的100次调用,所以我不希望CLR的性能开销检查所有这些调用 - 因此使用SuppressUnmanagedCodeSecurity.文档提到"非常谨慎地使用此属性.不正确的使用可能会产生安全漏洞.",这就是我要问的问题,使用上述方法再次"安全".
归档时间: |
|
查看次数: |
3799 次 |
最近记录: |