Основная проблема с Windows Explorer заключается в том, что она не поддерживает возобновление копирования после ошибки чтения. Например, большинство поверхностно поцарапанных компакт-дисков будут терпеть неудачу на разных участках диска каждый раз, когда вы выгружаете и повторно вставляете их.
Таким образом, с помощью утилиты, поддерживающей возобновление операций копирования, можно прочитать все содержимое поврежденного компакт-диска, выполнив несколько раз «извлечения/перезагрузки/возобновления».
Фактически, это то, что делает utility I wrote, и мне никогда не нужно было ничего интересного, чтобы читать поцарапанные диски. (Он просто использует ReadFile и WriteFile.)
Один шаг ниже будет открывать необработанный раздел (то есть образ диска), передавая строку, такую как «\. \ F:» (обратите внимание: слэши являются буквальными здесь) в CreateFile , Это позволит вам читать необработанные сектора с диска, но восстановить файлы из этих данных будет сложно.
Действительно, синтаксис «\. \» Позволяет открывать устройства в «\ GLOBAL ??» ветви пространства имен Windows Object Manager, как если бы они были файлами. Это не похоже на вызов dd с параметром/dev/x. Существует также ветвь «\ Device», но это доступно только через DeviceIoControl() (т. Е. Ioctl()), что означает, что нет простого интерфейса ReadFile()/WriteFile().
Что-нибудь более низкое, чем это было бы специфично для устройства; как чтение необработанных данных CD-ROM (включая биты ECC), как это делают некоторые программы для записи CD. Вам нужно будет провести некоторое исследование на конкретных носителях (CD, Flash, DVD) и то, что ваше оборудование позволяет вам делать с ними.
Примечание: обратные косые черты, похоже, теряются на пути к веб-странице; вам необходимо передать «обратную косую черту с обратным слэшем» в «CreateName». Разумеется, вам тоже нужно бежать от них.
Позднее дополнение, coz Я только что имел большой успех, используя `ddrescue` – ryenus 2016-04-09 02:25:17