in pkg/lockedfile/lockedfile_windows.go [115:142]
func (self *lockedFile) WriteLockedFile(bytes []byte) error {
ol, err := getOverlapped()
if err != nil {
return err
}
defer windows.Close(ol.HEvent)
err = windows.WriteFile(self.fileHandle, bytes, nil, ol)
if err != syscall.ERROR_IO_PENDING {
return err
}
s, err := windows.WaitForSingleObject(ol.HEvent, fileIOTimeoutInMilliseconds)
switch s {
case syscall.WAIT_OBJECT_0:
// success writing file
return err
case syscall.WAIT_TIMEOUT:
windows.CancelIo(self.fileHandle)
return &FileIoTimeout{"fileIO timed out"}
default:
return err
}
return nil
}