我正在使用此FILETIME结构进行互操作:
[StructLayout(LayoutKind.Explicit)]
public struct FILETIME
{
[FieldOffset(0)]
public int dwLowDateTime;
[FieldOffset(4)]
public int dwHighDateTime;
[FieldOffset(0)]
public long QuadDateTime;
}
它似乎适用于x86(现在无法测试),但它可以在x64上运行。我正在使用quadpart在DateTime和FILETIME之间进行转换。
答案 0 :(得分:2)
那应该没问题。无论底层架构(x86或x64)如何,数据类型的大小都在.NET中得到修复。您的结构总是大小为8个字节。
答案 1 :(得分:1)
它可以在x64上运行,但可能无法在其他处理器架构上运行(例如IA64,如果您关心它)。
在win32中,FILETIME是4字节对齐的。如果您运行的架构需要64位long
为8字节对齐,那么访问QuadDataTime字段可能会导致异常。