//go:build windows package state import ( "os" "runtime" "syscall" "unsafe" ) var lockFileEx = syscall.NewLazyDLL("kernel32.dll").NewProc("LockFileEx") func lockExclusive(f *os.File) error { var overlapped syscall.Overlapped // LOCKFILE_FAIL_IMMEDIATELY | LOCKFILE_EXCLUSIVE_LOCK, first byte only. ok, _, err := lockFileEx.Call(f.Fd(), 3, 0, 1, 0, uintptr(unsafe.Pointer(&overlapped))) runtime.KeepAlive(f) if ok != 0 { return nil } if err == syscall.Errno(33) { return ErrBusy } return err } // Windows is a development platform. File.Sync is used, but Go does not provide // a portable directory fsync here. Do not claim Windows power-loss durability. func syncDirectory(*os.Root) error { return nil }