WinSCP uses FindFirstChangeNotification API to receive notifications about changes in watched directory(is). This way it does not receive information about particular file that gets changed. To find out, it performs synchronization between the changed local directory and corresponding remote directory. This has following impacts:
1) Even non-changed files may get updated on remote directory, if the directories were not synchronized before.
2) Plain renaming of local file results in deleting original remote file and uploading new file.
3) Timestamps of local and remote files must be aligned.
4) Timestamp precision is important. Particularly with FTP, with precision of one minute, frequent changes are not uploaded, as the timestamp may stay the same.
Solution is either to:
1) Remember last state of local directory(is) and compare new directory state against it (and not against remote directory)
2) Use ReadDirectoryChangesW API (available since Windows 2000 only).