func (f *Flock) Lock() error {
	return f.lock(&f.l, winLockfileExclusiveLock)
}
Lock is a blocking call to try and take an exclusive file lock. It will wait
until it is able to obtain the exclusive file lock. It's recommended that
TryLock() be used over this function. This function may block the ability to
query the current Locked() or RLocked() status due to a RW-mutex lock.

If we are already locked, this function short-circuits and returns
immediately assuming it can take the mutex lock.
package flock
import (
	"syscall"
)
const ErrorLockViolation syscall.Errno = 0x21  