View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001218 | Far Manager | File System | public | 2009-12-16 22:59 | 2010-02-26 08:44 |
Reporter | Galdobin Dmitry | Assigned To | alexy | ||
Priority | high | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Platform | WinPE 3.0 | OS | Win7 | OS Version | x86, Rus |
Product Version | 2.0 | ||||
Fixed in Version | 2.0 | ||||
Summary | 0001218: Ошибка при работе в WinPE 3.0 | ||||
Description | Случайно обнаружил очень досадную вещь: установил Far 2.0 (и стабильный и самый последней сборки) на загрузочный WinPE 3.0 Rus (от Win7, x86) и заметил, что если с любой панели Фара зайти на корень диска X:\, потом в какую-нибудь папку на нем, а потом снова на корень X:\, то в корне X:\ всё содержимое "утраивается" (появляется по тройке каждой папки!). И так до бесконечности. Если же выйти из фара, и сделать в корне X:\ команду Dir, то всё также и остаётся! Что интересно - характерно только для диска X:\! | ||||
Steps To Reproduce | На загрузочном WinPE сделать: 1. Зайти на X:\; 2. Зайти в любую папку, коих там всего 3-4 шт.; 3. Тут же выйти снова в корень X:\! 4. Увидеть "чудо" :) | ||||
Tags | No tags attached. | ||||
Build | 1419 | ||||
|
Far 1.75 как себя ведет? |
|
Знаем, видели. Это глюки FBWF (file-based write filter driver). Со стороны фара чинить бессмысленно. |
|
Доброго времени суток! Спасибо за то, что откликнулись на мое сообщение об ошибке! Far 1.75 ведёт себя нормально (там сия "чуда" не было). косяк FBWF - это конечно не комильфо, но надежда умирает последней :). Я, конечно, не разработчик FAR, но может есть какая-то частная возможность (возможно, в ущерб чему-то) обойти данную ошибку или предусмотреть какую-нибудь опцию специально для запуска в среде WinPE - просто занимаюсь WinPE и прочими сборками, а Far здесь - незаменим (Far 2 с Unicode в данном случае лучше 1.75, но и ей можно пока обойтись). Оно, конечно, может и нельзя, но уж очень хочется [Far 2 в WinPE 3.0]))) |
|
> Far 1.75 ведёт себя нормально (там сия "чуда" не было). Ну видимо 1.75 не использует какое-то апи, которое использует 2.0. > Оно, конечно, может и нельзя, но уж очень хочется Чтобы точно сказать, можно или нельзя, надо смотреть. А смотреть в WinPE наощупь - неинтересно. Если очень хочется и занимаешься WinPE - расскажи сперва, как поставить FBWF на обычный windows, а там видно будет. |
|
http://www.mp3car.com/vbulletin/winnt-based/121088-guide-using-fbwf-windows-xp-pro.html |
|
в flupdate.cpp есть код dw = apiGetFileAttributes(strTemp); которым проверяется существование файлов "." и ".." в корне диска. после каждого такого вызова количество файлов в корне "растёт". если добавить такой вызов для несуществующего файла, то рост ускоряется. похоже, проблема только с несуществующими файлами, если так проверять существование существующих файлов в корне, то всё в порядке(хотя на счёт последнего не помню). |
|
Как я понял, fbwf - это "обманка" для readonly и protected носителей через кэш в оперативной памяти (типа эмуляции записи, например, на CD-ROM - конечно, ничего не пишется, но создаются нужные файлы в памяти, а ОС возвращает типа всё записалось (через диск X:\)). Вот видно там у API и возникает "размножение" несуществующих файлов. Более глубоко пока не разбирался, но помоему fbfw в WinPE 3.0 имеет еще и дополнительное назначение, так как установлен по умолчанию (ранее этот пакет можно было установить вручную - сам не ставил, но читал (WinPE для XP сам не собирал)). Если ошибка в API, то это печально, так как вряд ли MS будет что-что исправлять :( Только странно вот одно - Far175 работает идеально. А почему?!!! P. S. В исходники лезть не буду - вряд ли я превзойду всю команду разработчиков! Тем более, они и так знают, что и где криво работает. Также можно понять их нежелание делать какие-то исправления ради WinPE, но считаю, что для WinPE даже И БЛИЗКО нет (и вряд ли когда будет) альтернативы Far (всякие там Total Commander и т.д и т.п - для меня это детские рюшечки, на две головы меньшие Far'a). Будем юзать пока 1.75 |
|
Galdobin Dmitry, где можно оригинальную WinPE 3 качнуть? На M$ что-то не видел. |
|
vskirdin на MS и нет её. ток у пиратов ищи по имени MICROSOFT.WINDOWS.7.OEM.PREINSTALLATION.KIT.7600.16385.RTM.ENGLISH.DVD MICROSOFT.WINDOWS.7.OEM.PREINSTALLATION.KIT.7600.16385.RTM.RUSSIAN.DVD |
|
Загрузочная среда установки - это и есть WinPE, точнее WinRE - я собираю из него (уже набил руку - собираю из запчастей ручками ))). А вообще, если имеется оригинальный дистрибутив, который взять сейчас не проблема, то WinPE можно получить с помощью пакета WAIK (можно вообще скачать официально). Однако, в оригинале WinPE показывает только командную строку, поэтому его надо самому доводить до ума (я использую технологию .HTA). Имеется версия 64бит. В любом случае лучше выкачать пакет WAIK, так как он содержит просто бесценные пакеты (HTA, WMI - все работают из под VBScript, JavaScript). WAIK не содержит графической среды - придётся всё делать ручками!!! |
|
P. S. Дистрибутив Win7 + WAIK 2.1 + 5 минут времени = минимальный WinPE 3 ))) |
|
http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&displaylang=en |
|
для детектирования winpe можно проверять ключ SYSTEM\\CurrentControlSet\\Control\\MiniNT |
|
для детектирования winpe можно проверять ключ SYSTEM\\CurrentControlSet\\Control\\MiniNT Интересно... хотя применять детектирование среды не особо приходилось, данный способ стоит взять на заметку. Чё же на халяву не воспользоваться )))))))))))) Спасибо ))) |
|
> В исходники лезть не буду... Galdobin Dmitry, а почему бы и нет? Поковыряйся, сделай патч, приложи сюда, в этот Инц. Если твой патч разумный, не поломает основного функционала и при этом решит твою проблему... |
|
if (!Done) { string strTemp(NTPath(strCurDir).Str); DWORD dw; strTemp += L"\\."; dw = apiGetFileAttributes(strTemp); bDotExists = dw!=INVALID_FILE_ATTRIBUTES && dw&FILE_ATTRIBUTE_DIRECTORY; strTemp += L"."; dw = apiGetFileAttributes(strTemp); bTwoDotsExists = dw!=INVALID_FILE_ATTRIBUTES && dw&FILE_ATTRIBUTE_DIRECTORY; } Не люблю C++. Сделайте, кто-нибудь (кому не жалко) шоб эти два врага народа (bDotExists, bTwoDotsExists) возвращали false и не проверяли существование . и .. в корне диска, а эту версию и можно использовать с пометкой "WinPE 3.0"))))) (потери в проверке существования этих "двух" друзей (ДЛЯ FAT ??????!!!!!!!? )))))))))))) будем считать ничтожными (чудес не бывает!!!) Ну типа : If (!Done) { ЭТО НЕ_КОРЕНЬ_ДИСКА (ну грубо можно добавить проверку на то, что диск этот имеет букву X:\ - обычно это имя используется в WinPE 3.0 и ещё какую-нить проверку) ТОГДА { ВСЁ КАК БЫЛО } ИНАЧЕ // Это корень { bDotExists = false bTwoDotsExists = false } } P. S. не пинайте сильно, я с программированием знаком, но С++ НЕНАВИЖУ (А вот С# так ничё). Конечно, такой "вариант" - это решение в лоб, но полностью без потерь не обойтись (плевать на "." и ".." в корне диска - ну кому они нужны?)! У меня и компилятора нет и отладчика нет и любви к C++ тоже нет... P.P.S. А может это вовсе и не решение, но, инструментов для проверки не имею, а на фикс такого рода и с такими потерями вполне бы согласился (мне лично плевать эти два файла, даже с учётом возможных подводных камней) |
|
Ну может кто возьмётся, а то там столько исходников, что мне их собрать скорее всего не удастся (там файлов столько, что ппц... - аж плохо стало!). |
|
Far собирается элементарно: ставится компилятор (http://code.google.com/p/evil-programmers/wiki/HowToBuild), и выполняется команда make -f makefile_gcc |
|
проверяй на 1419. |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-12-16 22:59 | Galdobin Dmitry | New Issue | |
2010-01-09 14:36 | vskirdin | Note Added: 0004781 | |
2010-01-09 16:18 | DrKnS | Note Added: 0004782 | |
2010-01-11 19:14 | Galdobin Dmitry | Note Added: 0004789 | |
2010-01-11 19:21 | DrKnS | Note Added: 0004790 | |
2010-01-11 19:24 | alexy | Note Added: 0004791 | |
2010-01-11 19:24 | alexy | Summary | Ошибка при => Ошибка при работе в WinPE 3.0 |
2010-01-12 14:12 | dialex | Note Added: 0004792 | |
2010-01-13 19:10 | Galdobin Dmitry | Note Added: 0004805 | |
2010-01-13 19:16 | Galdobin Dmitry | Note Edited: 0004805 | |
2010-02-17 07:32 | vskirdin | Note Added: 0004968 | |
2010-02-17 12:04 | sonar | Note Added: 0004969 | |
2010-02-17 12:34 | Galdobin Dmitry | Note Added: 0004970 | |
2010-02-17 12:37 | Galdobin Dmitry | Note Added: 0004971 | |
2010-02-18 08:14 | dialex | Note Added: 0004980 | |
2010-02-18 14:41 | dialex | Note Added: 0004982 | |
2010-02-18 22:45 | Galdobin Dmitry | Note Added: 0004984 | |
2010-02-19 07:51 | vskirdin | Note Added: 0004985 | |
2010-02-19 17:57 | Galdobin Dmitry | Note Added: 0004988 | |
2010-02-19 18:10 | Galdobin Dmitry | Note Added: 0004989 | |
2010-02-19 23:31 | igor_yudincev | Note Added: 0004990 | |
2010-02-22 15:35 | alexy | Note Added: 0004994 | |
2010-02-22 15:35 | alexy | Status | new => assigned |
2010-02-22 15:35 | alexy | Assigned To | => alexy |
2010-02-22 15:35 | alexy | Status | assigned => feedback |
2010-02-26 08:44 | alexy | Build | => 1419 |
2010-02-26 08:44 | alexy | Status | feedback => closed |
2010-02-26 08:44 | alexy | Fixed in Version | => 2.0 |
2010-02-26 08:44 | alexy | Resolution | open => fixed |