AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
ChkDskGui (PureBasic)
Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия
Последний раз редактировалось: AZJIO (2024-11-07 09:05), всего редактировалось 44 раз(а)
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
wadimus, я уже пробовал давно, у него тип Fixed, я не знаю как его определить, что он виртуальный. Надо наверно в реестре искать точки монтирования и пути. Учитывая что флешка в LiveCD монтируется дважды было бы уместно показать только 1 экземпляр. Погуглил, нашёл способlpDeviceName.s = "Y:" lpTargetPath.s = Space(#MAX_PATH) QueryDosDevice_(@lpDeviceName, @lpTargetPath, #MAX_PATH) Debug lpTargetPath 78398при попытке показа SMART у SSD и HDD выскакивает окно "У флешки нет SMART" проверил что показывает "CrystalDiskInfo 8.6.0" для SSD, почему то все по 100, как будто стандартные данные взял и всё, диску уже 2 года и куча ошибок из-за плохого шлефа должно быть. Посмотрел русификатор, там даже учитываются модели. Ну да ладно соревноваться с таким качеством сложно, разве что 8 килобайт по сравнению с 2,3 Мб.
|
Отправлено: 16-Июн-2020 08:08
(спустя 1 час 54 минуты)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Обновил. Игнорирование виртуальных дисков созданных с помощью subst Тестируйте на сбойных. Смысл такой: если номер диска "?: ?", то проверяем, что тип диска "\Device\HarddiskVolume...", то есть не путь что-то вроде "\??\C:\путь". Надеюсь что у всех реальных дисков "\Device\HarddiskVolume", у себя проверил. Можно было сделать условие типа чтобы начало не было "\??\".
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
KisPavVlad, перезалил. Мне сначала не понравилось что вариант "Да, нет" имеет неактивный крестик, переделал в "ОК, отмена". Но в справке:#PB_MessageRequester_Yes : (6) : Была нажата кнопка "OK". Результат "Да" тоже что "ОК", на самом деле перевод не верный. Так как я использовал виндовую константу, надо было и в результате использовать виндовый флаг возврата. В общем был уверен что работает и не стал проверять.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
KisPavVlad, у меня 50 программ/утилит написано, может Joker-2013 и вспомнил, но я уже пережил многие периоды, и программа лучше развивается, когда она обсуждается и за год активного обсуждения она будет больше чем если автор сам себе режиссёр и хочет без подсказок достичь совершенства, он просто лишается тестеров, лишается грамотных подсказок продвинутых пользователей, лишается невзначай брошенных советов мимопроходящих. Ты смотришь со своей колокольни, не понимая картину сверху.
|
Отправлено: 17-Июн-2020 07:20
(спустя 1 час 7 минут)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
78466который последний без этого пункта Тебя так напрягает авторство? Написать 1000 строк кода и пусть будет без ненужного пункта кто автор? И без игнора вирт диска. Но вообще-то если так напрягает видеть этот пункт в несколько байт и ради него лишиться полезных фич, я бы в таком случае хотя бы удалил пункт руками, но скомпилировал с фичами.
|
dimo70
- Стаж: 6 лет 11 месяцев
- Сообщений: 3780
- Репутация:27[+] [-]
- Откуда: BG
|
AZJIO, меня лишь одна просьба. Можно сделать колонку с обозначении (без претенсии какого) состояние диска, ок или нет, да пусть и не совсем точно. Идея такая. На сервис запускаю вин пе и быстро открываю ChkDskGui. Он уже почти все показывает про дисков, кроме их состояние. Я так или иначе каждый раз открываю HDSentinel, чтоб смотреть смарт, но он намного медленнее открывается. Но если возможно не меню, а просто индикация. Если увижу, что проблемма есть, я уже могу пользоваться всякими другими проффесиональными программами (HDSentinel, Victoria, HDDarts) для тестирования данного диска. Тут просто как лампочка красная только если проблем замечен. И если возможно GPT/MBR показывать для дисков, тоже бы неплохо. Остальное супер получилось.
_________________ Подпись отключена за нарушение правил форума
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Есть WinAPI-функции, по крайней мере, это не так как я думал ранее, что надо читать начало диска и анализировать структуру данных, но пока не разобрался. На счёт здоровья не осилю, тут нужен именно спец по дискам, который бы обозначил критерии, был опыт работы с кучей дисков разного состояния. Да и вообще эти проги здоровья иногда показывают здоровым диск, который медленно работает и наоборот отличный диск вроде, а он его как средний или плохой показывает. Вот у меня после проблемы с кабелем он мог повысить параметр перечитывания данных или снижения скорости ради считывания, а на самом деле меняешь шлейф и диск отлично работает, а в параметре пишет что превысил значение до крайности. Так что кроме температуры я не вижу там ничего интересного, но для температуры программный код не был оптимизирован, то есть выкинуто всё и оставлено только запрашиваемый атрибут, там он в разы сократится.
|
WindR
- Стаж: 9 лет 9 месяцев
- Сообщений: 26
- Репутация:3[+] [-]
|
AZJIO, Можно ещё добавить снятие галки с проверяемого диска по успешному окончанию проверки?
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
WindR, пока нет, тест запускает сторонний процесс и можно запустить параллельно несколько дисков, в каждом из которых несколько логических дисков, как за этим следить? Сохранять массив дисков привязанных к потоку или следить не закрылось ли окно запущенного потока? Или читать с потока инфу сигнализирующую о завершении теста с учётом привязки дисков к потоку. В общем получится много запутанного кода, который непонятно как будет зависеть при сортировке, фичу придётся обслуживать при изменении кода. В общем головоломка не стоящая свеч. Этот запрос уже был. Можно 2 раза кликнуть "Выделить все диски" и все галки снимутся. dimo70, по МБР ещё погуглил, нашёл пример на С++. Посмотрел код, там в принципе получил 512 байт, проверил что последние 2 байта 0x55 0xAA, то есть делает анализ MBR. Тут есть некоторая информация о позиции данных в этом блоке. В том числе в коде для анализа GPT он от начала читает EFI PART. Также там есть анализ EBR. Не знаю насколько доверять коду, но начальные прикидки сходятся. На хабре ещё о разметке MBR/GPT Удалось прочитать MBR вот так:EnableExplicit #block = 512 Global hDevice, dwBytesRead.l Global Dim Buff.a(#block) hDevice = CreateFile_("\\.\PhysicalDrive0", #GENERIC_READ, #FILE_SHARE_READ | #FILE_SHARE_WRITE, #NUL, #OPEN_EXISTING, 0, #NUL) If hDevice ReadFile_(hDevice, @Buff(), #block, @dwBytesRead, #NUL); CloseHandle_(hDevice) MessageRequester("", Str(dwBytesRead)) ShowMemoryViewer(@Buff(), ArraySize(Buff())) EndIf Диск открыт с возможностью параллельной записи, и где то я слышал, что диск надо открывать так чтобы к нему был доступ на чтение и запись иначе не даст открыть (FILE_SHARE_WRITE). А в "HxD -> Дополнительно -> Открыть диск" надо открыть не диск C:, а Физические диски -> Жёсткий диск 1. Информация один в один. Потестируйте временный файл у кого есть GPT, если определит, то можно сказать готовый вариант. Также пример чтение диска 0, как это бывает форматированная таблица Hex-данных и справа столбик с тектом.
|
cormas02
- Стаж: 5 лет 7 месяцев
- Сообщений: 23
- Репутация:0[+] [-]
|
AZJIO, У меня есть два диска. Один MBR, другой GPT. Диск GPT упоминается утилитой как MBR. (55 AA)
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
cormas02, другим EXE проверь GPT скрин покажи, в начале там есть "EFI PART" если нет, посмотри в HxD следующие 512 байт, в коде на С++ там для GPT захватывает 4096 байт. Я могу первым проверять GPT, а потом MBR, а на данный момент сначала MBR, а потом GPT, может у GPT тоже 55 AA, странно.
|
Страница 26 из 34
Текущее время: 27-Ноя 03:39
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|