基于此问题How to declarate LARGE_INTEGER in C#和answer:
[StructLayout(LayoutKind.Absolute, Size=8)]
struct LARGE_INTEGER
{
[FieldOffset(0)]public Int64 QuadPart;
[FieldOffset(0)]public UInt32 LowPart;
[FieldOffset(4)]public Int32 HighPart;
}
我的假设下面是否宣布ULARGE_INTEGER
正确吗?
[StructLayout(LayoutKind.Explicit, Size = 8)]
public struct ULARGE_INTEGER
{
[FieldOffset(0)] public UInt64 QuadPart;
[FieldOffset(0)] public UInt32 LowPart;
[FieldOffset(4)] public UInt32 HighPart;
}
答案 0 :(得分:1)
它只是C#中的ulong,无需跳过LayoutKind.Explicit箍。联合是必要的,因为C和C ++编译器在过去的日子里没有原生的64位类型。