В чем может быть причина ошибки Windows ERROR_DISK_FULL (112) при открытии альтернативного потока данных NTFS? - PullRequest
0 голосов
/ 22 октября 2009

Мое приложение записывает несколько байтов данных в альтернативный поток данных. Это прекрасно работает на всех компьютерах, кроме одной (Windows Server 2003 SP2). Вместо этого CreateFile возвращает ERROR_DISK_FULL, когда я пытаюсь создать альтернативный поток данных (в корневом каталоге). Я не нахожу причину этого результата, потому что ...

  • На этом диске достаточно места.

  • Диск отформатирован в NTFS (из-за GetVolumeInformation).

  • Привод поддерживает данные альтената потоки (из-за GetVolumeInformation).

Редактировать: Я могу предоставить дополнительную информацию о причине , а не : Я добавил в тестовую систему множество потоков, которые не отображали ошибку, и задавался вопросом, может ли эта ошибка возникнуть. Это не так. Вместо этого после примерно 2000 потоков с длинными именами файлов произошла другая ошибка: 1450 (ERROR_NO_SYSTEM_RESOURCES).

РЕДАКТИРОВАТЬ: Вот пример для одного из используемых имен файлов:

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

РЕДАКТИРОВАТЬ: наш клиент использует корпоративное антивирусное программное обеспечение от Avira на этом сервере. Может быть, в этом причина (альтернативные потоки данных могут быть использованы вредоносным ПО).

Ответы [ 7 ]

2 голосов
/ 18 августа 2011

После открытия заявки на поддержку в MS я знаю, что был установлен флаг только для чтения, который можно установить (и сбросить) только с недокументированными функциями Windows. Никто не знает, кто установил этот флаг и почему, но я послал им изображение диска (после того, как я получил машину от нашего клиента), и они выяснили это. У нас есть только обходной путь в нашем приложении (мы используем другое местоположение, если мы обнаружим эту ошибку). Между тем мы знаем, что у некоторых наших клиентов есть эта проблема.

1 голос
/ 30 октября 2009

Есть ли сжатые / резервные файлы или альтернативные потоки данных?

Часто приложения резервного копирования получают ошибки ERROR_DISK_FULL, пытаясь выполнить резервное копирование сжатых файлов, и это вызывает некоторую путаницу, когда на диске остается несколько гигабайт свободного места. Другие проблемы также могут возникнуть при копировании сжатых файлов. Цель этого блога - дать читателю более полное представление о том, что действительно происходит при сжатии файлов NTFS.

С Общие сведения о сжатии NTFS

0 голосов
/ 03 мая 2010

Если вы попытаетесь скопировать файл размером более 2 ГБ из другой файловой системы (NTFS) в FAT / FAT32 с ограничением в 2 ГБ, вы можете увидеть эту ошибку.

0 голосов
/ 03 ноября 2009

Имя файла, которое вы даете

char szStreamFileName[] = "C:\\:abcdefghijklm...

начинается с

C:\\:

Это опечатка в сообщении или после косой черты действительно двоеточие? Я думаю, что это незаконное имя файла.

0 голосов
/ 02 ноября 2009

Возможно, вы захотите увидеть, что что-то вроде утилита Sysinternal's Process Monitor перехватывает при попытке создать этот файл - она ​​показывает коды возврата различных API, включенных в стек ввода-вывода, и один из них может выдавать Вы подсказываете, почему 112 возвращается вам. Надеюсь, что уровень детализации в ProcMon будет достаточным - если нет, то я думаю, что есть другие, более подробные средства трассировки ввода / вывода для Windows (но я не знаю их из головы)

0 голосов
/ 28 октября 2009

Просто еще одна возможность ...

Проверяли ли вы количество открытых файлов в вашей ОС? Поддержка ОС макс. количество зарезервированных дескрипторов файлов после этого отчета

И вторая возможность ... Корневой каталог ограничен количеством файлов. Насколько я помню 512 файлов в старых версиях ОС. Но NTFS поддерживает неограниченное количество файлов в корне!

0 голосов
/ 22 октября 2009

Просто слепой выстрел, но правильно ли установлены права?

...