FILETIME on x64

本文关键字:x64 on FILETIME | 更新日期: 2023-09-27 17:57:31

我正在使用此FILETIME结构进行interop:

[StructLayout(LayoutKind.Explicit)]
public struct FILETIME
{
    [FieldOffset(0)]
    public int dwLowDateTime;
    [FieldOffset(4)]
    public int dwHighDateTime;
    [FieldOffset(0)]
    public long QuadDateTime;
}

它似乎能在x86上工作(现在还不能测试),但它能在x64上工作吗。我使用四分之一在DateTime和FILETIME之间转换。

FILETIME on x64

应该没问题。在.NET中,数据类型的大小是固定的,与底层体系结构(x86或x64)无关。您的结构将始终为8字节大小。

它可以在x64上工作,但可能无法在其他处理器体系结构上工作(例如,如果您关心它的话,IA64)。

在win32中,FILETIME是4字节对齐的。如果在要求64位long为8字节对齐的体系结构上运行,则访问QuadDataTime字段可能会导致异常。