github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/pkg/system/chtimes_windows.go (about) 1 // +build windows 2 3 package system 4 5 import ( 6 "syscall" 7 "time" 8 ) 9 10 //setCTime will set the create time on a file. On Windows, this requires 11 //calling SetFileTime and explicitly including the create time. 12 func setCTime(path string, ctime time.Time) error { 13 ctimespec := syscall.NsecToTimespec(ctime.UnixNano()) 14 pathp, e := syscall.UTF16PtrFromString(path) 15 if e != nil { 16 return e 17 } 18 h, e := syscall.CreateFile(pathp, 19 syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil, 20 syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0) 21 if e != nil { 22 return e 23 } 24 defer syscall.Close(h) 25 c := syscall.NsecToFiletime(syscall.TimespecToNsec(ctimespec)) 26 return syscall.SetFileTime(h, &c, nil, nil) 27 }