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