Решение проблемы с ошибкой копирования
Размещено 19/10/2007 |
|
Однажды один из моих друзей обратился ко мне за помощью. Он поведал мне, что столкнулся с проблемой при копировании изображений на свой USB-драйв. После копирования более 200 фотографий неожиданно возникла ошибка, после которой стало невозможным скопировать изображение и стало появляться следующее сообщение:
К сожалению, сообщение
“Невозможно создать файл
или папку” никоим
образом не указывало на
причину проблемы и не
сообщало, где следует
искать решение. Мой
знакомый был весьма
сообразительным,
поэтому, прежде чем
обратиться ко мне,
проверил, что места на
диске было
предостаточно, но
все-таки запустил
утилиту Chkdsk для
проверки памяти на
повреждения. Однако,
результатов это не дало,
хотя ошибка продолжала
неустанно появляться при
попытке копирования
изображений на
флэш-драйв.
Я, со своей стороны, я
попросил его запустить
Process Monitor,
утилиту, которая в
реальном времени
регистрирует все
обращения к файловой
системе и реестру, что
теоретически позволяет
определить причину
различных сбоев и ошибок
ОС. Затем он отправил
мне отчет утилиты в
формате PML и я открыл
его. После установки
фильтра по букве диска,
а затем фильтра
операций, относящихся
непосредственно к
копированию информации,
я стал прочесывать отчет
на наличие ошибок.
Собственно, мне не
потребовалось много
времени, поскольку в
последней строке отчета
и была ошибка,
вызывающая диалог
системы:
С целью экономии
пространства на рабочем
столе компьютера Process
Monitor добавляет к
отображаемым ошибкам
префикс “STATUS”,
поэтому действительной
системной ошибкой в
данном случае являлась
STATUS_CANNOT_MAKE.
Лично я никогда не
слышал и, тем более, не
видел подобную ошибку.
Кроме того, вместо имени
ошибки Process Monitor
показывал ее код -
0xc00002ea, поэтому
пришлось поискать в
файле Ntstatus.h из
Windows Device Driver
Kit, а затем добавить в
Process Monitor функцию,
конвертирующую коды
ошибок в текст.
Тогда мне удалось
отыскать ошибку в
исходном коде Windows,
но что насчет тех, кто
не имеет возможности
покопаться в исходном
коде ОС. Как им решить
данную проблему? Поиск
привел меня к старой
ветке в новостной группе
для разработчиков
файловой системы
Windows:
Безусловно, раздел был
отформатирован под
файловую систему FAT и
множество файлов,
включая файлы с длиными
именами, вполне могли
использовать все
доступные 512 корневых
папок.
Проблему удалось-таки
решить. Я посоветовал
моему приятелю два
варианта: 1) создать в
корневой директории
подпапку и скопировать
оставшиеся файлы туда
или 2) отформатировать
флэш-драйв под файловую
систему FAT32, что
уберет ограничения по
числу файлов/папок в
корневой директории
диска.
Тем не менее, один
вопрос остался
нерешенным. Почему диск
был форматирован под FAT
вместо FAT32? Причина
кроется и в
производителе USB-драйва
и в диалоге
форматирования,
используемом в Windows.
Я не уверен, но по-моему
большинство
производителей
форматируют выпускаемые
накопители под FAT,
поскольку данная система
гарантированно работает
там, где другие файловые
системы, как FAT32, не
поддерживаются. Например
в DOS 6 и Windows 95.
Что до Windows, то я
всегда думал, что по
умолчанию предлагается
форматировать диск под
FAT32, но диалог
форматирования для
одного из моих устройств
показал, что это не так:
Мне не удалось найти
рекомендации по созданию
данного диалога, но
быстрый взгляд на
исходный код показал,
что Windows по умолчанию
предлагает форматировать
под FAT все
не-CD-ROM-подобные
извлекаемые устройства
размером менее 4GB.
Думаю, что дело об
ошибке копирования можно
закрыть, но я чувствую
себя обязанным сделать
два дела: 1) попытаться
сделать сообщения об
ошибках более понятными
и 2) лоббировать
изменение формата,
используемого по
умолчанию для
форматирования
флэш-драйвов, на FAT32.
Пожелайте мне удачи.
Источник:
http://blogs.technet.com/markrussinovich
Перевод: deeper2k
|