static dt_status_t dt_filetime_to_timestamp()

in src/win32/dt_win32.c [174:188]


static dt_status_t dt_filetime_to_timestamp(const PFILETIME ft, dt_timestamp_t *ts)
{
    LARGE_INTEGER li;

    if (!ft || !ts) {
        return DT_INVALID_ARGUMENT;
    }

    li.QuadPart = ft->dwHighDateTime;
    li.QuadPart <<= 32;
    li.QuadPart |= ft->dwLowDateTime;
    ts->second = (long)(li.QuadPart / 10000000);
    ts->nano_second = li.QuadPart % 10000000 * 100;
    return DT_OK;
}