我是 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/