しかし、もしコピー元のディスクが部分的に読み取り不能になっていたら…?
コピー先のファイルがすべてなくなってしまう…!? という事件が実際にありました。
という訳で、シミュレーションをしたくなりました。
Windows API はどのようなエラーを返すのか。
実際に遭遇した。ReadFile で
- ERROR_CRC
(23, 0x00000017, Check)
- Data error (cyclic redundancy check).
1117, 0x0000045D, Check
- ERROR_IO_DEVICE
- The request could not be performed because of an I/O device error.
https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/fastfat を査読して。
STATUS_FILE_CORRUPT_ERROR
STATUS_DATA_ERROR
STATUS_IN_PAGE_ERROR
STATUS_DISK_CORRUPT_ERROR
STATUS_EA_CORRUPT_ERROR
STATUS_EA_LIST_INCONSISTENT
STATUS_UNMAPPABLE_CHARACTER
STATUS_MEDIA_WRITE_PROTECTED
https://blog.csdn.net/whf727/article/details/2121582
ERROR_CRC
ERROR_FILE_CORRUPT
ERROR_DISK_CORRUPT
ERROR_EA_LIST_INCONSISTENT
ERROR_NO_UNICODE_TRANSLATION
ERROR_WRITE_PROTECT
ERROR_FILE_CORRUPT
ERROR_DISK_CORRUPT
ERROR_EA_LIST_INCONSISTENT
ERROR_NO_UNICODE_TRANSLATION
ERROR_WRITE_PROTECT
Linux でそういったデバイスを作成
dd if=/dev/zero of=~/disk bs=60KiB count=1
mkfs.ext2 ~/disk
...
sudo losetup -f ~/disk
losetup -l
sudo dmsetup create bad_disk < form
sudo mount -t ext2 /dev/mapper/bad_disk /mnt/
form:
0 118 linear /dev/loop1 0
118 1 error
119 1 linear /dev/loop1 119
なんか Samba は FindFirstFile FindNext でエラー返してくれないです。