Csharp/C#教程:如何制作WinApi函数的返回值?分享


如何制作WinApi函数的返回值?

简单:如何明确封送WinAPi函数的结果?


我知道如何在C#中编组WinApi函数的参数但是我如何编组返回值呢? 或者我真的要整理它们吗? 我理解WinAPi只返回BOOL或所有类型的INT (句柄在非托管代码中也是int)。

 // common signature [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)] static extern int GetFileAttributes([MarshalAs(UnmanagedType.LPStr)] string filename); // my prefered signature because easy to handle the result [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Ansi)] static extern FileAttributes GetFileAttributes([MarshalAs(UnmanagedType.LPStr)] string filename); 

因为FileAttributes是枚举的,并且每个值都可以很容易地转换为int所以我确信这个符号是安全的。 但是我可以像参与参数一样编组这个签名中的结果吗? 我实际上只知道Marshal类和MarshalAs属性。

是的你可以。 您只需要使用[return:]属性语法,例如:

 [return: MarshalAs(UnmanagedType.LPStruct)] 

但在你的情况下,没有编组要做。 转换整数类型不需要编组,因此只需使用示例中的第二种forms。

如果你真的想要,你可以写一个名为GetFileAttributes()的公共方法,它检查有效性的返回值。

上述就是C#学习教程:如何制作WinApi函数的返回值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/985293.html

(0)
上一篇 2021年12月21日
下一篇 2021年12月21日

精彩推荐