mirror of
https://github.com/xiaoqidun/setft.git
synced 2026-01-11 00:10:21 +08:00
feat(初始项目): 初始项目
This commit is contained in:
26
setft_windows.go
Normal file
26
setft_windows.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package setft
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
func SetFileTime(path string, atime, ctime, mtime time.Time) (err error) {
|
||||
path, err = syscall.FullPath(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
pathPtr, err := syscall.UTF16PtrFromString(path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
handle, err := syscall.CreateFile(pathPtr, syscall.FILE_WRITE_ATTRIBUTES, syscall.FILE_SHARE_WRITE, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_BACKUP_SEMANTICS, 0)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer syscall.Close(handle)
|
||||
a := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(atime.UnixNano())))
|
||||
c := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(ctime.UnixNano())))
|
||||
m := syscall.NsecToFiletime(syscall.TimespecToNsec(syscall.NsecToTimespec(mtime.UnixNano())))
|
||||
return syscall.SetFileTime(handle, &c, &a, &m)
|
||||
}
|
||||
Reference in New Issue
Block a user