func()

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
}