x64上的FILETIME

时间:2011-05-23 15:08:56

标签: c# .net c++ winapi interop

我正在使用此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之间进行转换。

2 个答案:

答案 0 :(得分:2)

那应该没问题。无论底层架构(x86或x64)如何,数据类型的大小都在.NET中得到修复。您的结构总是大小为8个字节。

答案 1 :(得分:1)

它可以在x64上运行,但可能无法在其他处理器架构上运行(例如IA64,如果您关心它)。

在win32中,FILETIME是4字节对齐的。如果您运行的架构需要64位long为8字节对齐,那么访问QuadDataTime字段可能会导致异常。