FILETIME на x64 - PullRequest
       7

FILETIME на x64

1 голос
/ 23 мая 2011

Я использую эту структуру FILETIME для взаимодействия:

[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.

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Это должно быть хорошо. Размер типов данных фиксирован в .NET независимо от базовой архитектуры (x86 или x64). Ваша структура всегда будет иметь размер 8 байт.

1 голос
/ 23 мая 2011

Он будет работать на x64, но может не работать на других процессорных архитектурах (например, IA64, если вам это нужно).

В win32 FILETIME выравнивается по 4 байта.Если вы работаете в архитектуре, для которой требуется, чтобы 64-битный long был выровнен по 8 байтов, то доступ к полю QuadDataTime может вызвать исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...