The scenario is that you move a file from an NTFS drive to a FAT drive and pass both FILETIME structures to CompareFileTime. It will NOT return 0 because file times are stored with 10 ms granularity in FAT and with 100 ns granularity in NTFS. When you move a file from an NTFS drive to a FAT drive, its time is rounded down.