简单:如何显式编组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
is enum 并且每个值都可以很容易地转换为int
我确信我对这个表示法是安全的。但是我可以像处理参数一样在这个签名中编组结果吗?我实际上只知道Marshal
类和MarshalAs
属性。