Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# x64上的文件时间_C#_.net_C++_Winapi_Interop - Fatal编程技术网

C# x64上的文件时间

C# x64上的文件时间,c#,.net,c++,winapi,interop,C#,.net,C++,Winapi,Interop,我将此文件时间结构用于互操作: [StructLayout(LayoutKind.Explicit)] public struct FILETIME { [FieldOffset(0)] public int dwLowDateTime; [FieldOffset(4)] public int dwHighDateTime; [FieldOffset(0)] public long QuadDateTime; } 它似乎可以在x86上工作(现在无

我将此文件时间结构用于互操作:

[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之间进行转换。

应该可以。无论底层架构(x86或x64)如何,数据类型的大小在.NET中都是固定的。您的结构的大小将始终为8字节。

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


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

使用操作系统结构时,如果使用
Int32
Int64
而不是
int
long
,您将避免很多混乱。为什么访问64位覆盖会导致异常?如果指针未对齐8字节,并且体系结构需要对齐,则可能会导致对齐错误。有关FILETIME,请参阅MSDN文档,其中明确警告不要将指向FILETIME的指针强制转换为_int64*。