View Issue Details

IDProjectCategoryView StatusLast Update
0001218Far ManagerFile Systempublic2010-02-26 08:44
ReporterGaldobin Dmitry Assigned Toalexy  
PriorityhighSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
PlatformWinPE 3.0OSWin7OS Versionx86, Rus
Product Version2.0 
Fixed in Version2.0 
Summary0001218: Ошибка при работе в 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. Увидеть "чудо" :)
TagsNo tags attached.
Build1419

Activities

vskirdin

2010-01-09 14:36

administrator   bugnote:0004781

Far 1.75 как себя ведет?

DrKnS

2010-01-09 16:18

administrator   bugnote:0004782

Знаем, видели.

Это глюки FBWF (file-based write filter driver).

Со стороны фара чинить бессмысленно.

Galdobin Dmitry

2010-01-11 19:14

reporter   bugnote:0004789

Доброго времени суток!
Спасибо за то, что откликнулись на мое сообщение об ошибке!

Far 1.75 ведёт себя нормально (там сия "чуда" не было).

косяк FBWF - это конечно не комильфо, но надежда умирает последней :).

Я, конечно, не разработчик FAR, но может есть какая-то частная возможность (возможно, в ущерб чему-то) обойти данную ошибку или предусмотреть какую-нибудь опцию специально для запуска в среде WinPE - просто занимаюсь WinPE и прочими сборками, а Far здесь - незаменим (Far 2 с Unicode в данном случае лучше 1.75, но и ей можно пока обойтись).
  Оно, конечно, может и нельзя, но уж очень хочется [Far 2 в WinPE 3.0])))

DrKnS

2010-01-11 19:21

administrator   bugnote:0004790

> Far 1.75 ведёт себя нормально (там сия "чуда" не было).

Ну видимо 1.75 не использует какое-то апи, которое использует 2.0.

> Оно, конечно, может и нельзя, но уж очень хочется

Чтобы точно сказать, можно или нельзя, надо смотреть.
А смотреть в WinPE наощупь - неинтересно.

Если очень хочется и занимаешься WinPE - расскажи сперва, как поставить FBWF на обычный windows, а там видно будет.

alexy

2010-01-11 19:24

administrator   bugnote:0004791

http://www.mp3car.com/vbulletin/winnt-based/121088-guide-using-fbwf-windows-xp-pro.html

dialex

2010-01-12 14:12

reporter   bugnote:0004792

в flupdate.cpp
есть код
dw = apiGetFileAttributes(strTemp);
которым проверяется существование файлов "." и ".." в корне диска.
после каждого такого вызова количество файлов в корне "растёт".
если добавить такой вызов для несуществующего файла, то рост ускоряется.
похоже, проблема только с несуществующими файлами, если так проверять существование существующих файлов в корне, то всё в порядке(хотя на счёт последнего не помню).

Galdobin Dmitry

2010-01-13 19:10

reporter   bugnote:0004805

Last edited: 2010-01-13 19:16

Как я понял, 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

vskirdin

2010-02-17 07:32

administrator   bugnote:0004968

Galdobin Dmitry, где можно оригинальную WinPE 3 качнуть? На M$ что-то не видел.

sonar

2010-02-17 12:04

developer   bugnote:0004969

vskirdin
на MS и нет её. ток у пиратов
ищи по имени
MICROSOFT.WINDOWS.7.OEM.PREINSTALLATION.KIT.7600.16385.RTM.ENGLISH.DVD
MICROSOFT.WINDOWS.7.OEM.PREINSTALLATION.KIT.7600.16385.RTM.RUSSIAN.DVD

Galdobin Dmitry

2010-02-17 12:34

reporter   bugnote:0004970

Загрузочная среда установки - это и есть WinPE, точнее WinRE - я собираю из него (уже набил руку - собираю из запчастей ручками ))).
А вообще, если имеется оригинальный дистрибутив, который взять сейчас не проблема, то WinPE можно получить с помощью пакета WAIK (можно вообще скачать официально). Однако, в оригинале WinPE показывает только командную строку, поэтому его надо самому доводить до ума (я использую технологию .HTA). Имеется версия 64бит.
В любом случае лучше выкачать пакет WAIK, так как он содержит просто бесценные пакеты (HTA, WMI - все работают из под VBScript, JavaScript).
 WAIK не содержит графической среды - придётся всё делать ручками!!!

Galdobin Dmitry

2010-02-17 12:37

reporter   bugnote:0004971

P. S. Дистрибутив Win7 + WAIK 2.1 + 5 минут времени = минимальный WinPE 3 )))

dialex

2010-02-18 08:14

reporter   bugnote:0004980

http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&displaylang=en

dialex

2010-02-18 14:41

reporter   bugnote:0004982

для детектирования winpe можно проверять ключ
SYSTEM\\CurrentControlSet\\Control\\MiniNT

Galdobin Dmitry

2010-02-18 22:45

reporter   bugnote:0004984

для детектирования winpe можно проверять ключ
SYSTEM\\CurrentControlSet\\Control\\MiniNT


Интересно... хотя применять детектирование среды не особо приходилось, данный способ стоит взять на заметку. Чё же на халяву не воспользоваться ))))))))))))

Спасибо )))

vskirdin

2010-02-19 07:51

administrator   bugnote:0004985

> В исходники лезть не буду...
Galdobin Dmitry, а почему бы и нет?
Поковыряйся, сделай патч, приложи сюда, в этот Инц.
Если твой патч разумный, не поломает основного функционала и при этом решит твою проблему...

Galdobin Dmitry

2010-02-19 17:57

reporter   bugnote:0004988

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. А может это вовсе и не решение, но, инструментов для проверки не имею, а на фикс такого рода и с такими потерями вполне бы согласился (мне лично плевать эти два файла, даже с учётом возможных подводных камней)

Galdobin Dmitry

2010-02-19 18:10

reporter   bugnote:0004989

Ну может кто возьмётся, а то там столько исходников, что мне их собрать скорее всего не удастся (там файлов столько, что ппц... - аж плохо стало!).

igor_yudincev

2010-02-19 23:31

reporter   bugnote:0004990

Far собирается элементарно: ставится компилятор (http://code.google.com/p/evil-programmers/wiki/HowToBuild), и выполняется команда
make -f makefile_gcc

alexy

2010-02-22 15:35

administrator   bugnote:0004994

проверяй на 1419.

Issue History

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