c# - 在 C# 中将 DWORD 编码为 long 还是 int?

标签 c# struct pinvoke dword

我是 P-Invoking SetServiceStatus在我的 C# 应用程序中。 Microsoft 的实现规定了 DWORD components of SERVICE_STATUS struct are Marshalled as long (Int64) rather than int.

我知道这些需要是无符号的(但 CLS 不允许无符号类型),所以我想知道微软建议使用 long 而不是 int 来规避无符号 CLS 问题的原因是什么?

此外,让我烦恼的是 DWORD 是 32 位而 long(C#) 是 64 位,但是 Microsoft 的示例说该结构将被声明为顺序布局,所以我不明白这是如何工作的(确认在我的机器上工作)

最佳答案

那篇文章是错误的。根据您的喜好,这些字段应该是 uint 或 perhals int。正如您正确指出的那样,C# 中的 long 是 64 位类型。

关于c# - 在 C# 中将 DWORD 编码为 long 还是 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46767696/

相关文章:

c# - C# 中的 DLLImport 调用不正确

c# - 如何调用 Windows API

c# - 强制客户端从 ASP 中的特定入口点进入站点

c# - 在 C# .NET 1.1 中打印哈希表的键和数据

c# - 如何编写正确的静态方法 - 多线程安全

c# - 在 Monotouch 中下载多个文件的推荐模式(异步/多线程)

转换为非标量类型

c++ - 查找 vector 中是否存在相同结构的最快方法

c - 从二进制文件 C 中写入和读取结构

c# - .NET 和 PCL(点云库)