[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
ChkDskGui (PureBasic) Исходник + EXE, v4.2 (x86, x64)Скачать yadi.sk upload.eeвременная версия


Последний раз редактировалось: AZJIO (2024-11-07 09:05), всего редактировалось 44 раз(а)

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет
  • Сообщений: 749
  • Репутация:91

    [+] [-]
добавил диск U:\ командой subst
в списке subst диск есть:
U:\: => H:\-Sborka
в списке дисков он есть, в ChkDskGui тоже есть.
но! он нужен ли в ChkDskGui?

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 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 Мб.

[Цитировать]

    lex
  • 21326
  • Стаж: 5 лет 3 месяца
  • Сообщений: 134
  • Репутация:-7

    [+] [-]
Ну да ладно соревноваться с таким качеством сложно, разве что 8 килобайт по сравнению с 2,3 Мб.
Так и я же о том - прога и так хороша, без рюшечек и комбайнов ay aa

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
Обновил.
Игнорирование виртуальных дисков созданных с помощью subst
Тестируйте на сбойных. Смысл такой: если номер диска "?: ?", то проверяем, что тип диска "\Device\HarddiskVolume...", то есть не путь что-то вроде "\??\C:\путь". Надеюсь что у всех реальных дисков "\Device\HarddiskVolume", у себя проверил. Можно было сделать условие типа чтобы начало не было "\??\".

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
KisPavVlad, перезалил. Мне сначала не понравилось что вариант "Да, нет" имеет неактивный крестик, переделал в "ОК, отмена". Но в справке:
#PB_MessageRequester_Yes : (6) : Была нажата кнопка "OK".
Результат "Да" тоже что "ОК", на самом деле перевод не верный. Так как я использовал виндовую константу, надо было и в результате использовать виндовый флаг возврата. В общем был уверен что работает и не стал проверять.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
KisPavVlad
1. Почему сайт должен исчезнуть? В таком ключе не надо мыслить.
2. Я могу в любой момент скомпилировать с другой ссылкой и выложить в архив взамен, люди будут качать с новой ссылкой.
3. Мне ровно если ссылка не будет работать через 10 лет, мне важно, что за 10 лет люди могут прийти на сайт и предложить качественные улучшения, которые в сумме будут превосходить неразвивающуюся прогу зарытую прогу с правильной ссылкой или без неё. Ты работаешь на понижение или повышение?

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
KisPavVlad, у меня 50 программ/утилит написано, может Joker-2013 и вспомнил, но я уже пережил многие периоды, и программа лучше развивается, когда она обсуждается и за год активного обсуждения она будет больше чем если автор сам себе режиссёр и хочет без подсказок достичь совершенства, он просто лишается тестеров, лишается грамотных подсказок продвинутых пользователей, лишается невзначай брошенных советов мимопроходящих. Ты смотришь со своей колокольни, не понимая картину сверху.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
78466который последний без этого пункта
Тебя так напрягает авторство? Написать 1000 строк кода и пусть будет без ненужного пункта кто автор? И без игнора вирт диска. Но вообще-то если так напрягает видеть этот пункт в несколько байт и ради него лишиться полезных фич, я бы в таком случае хотя бы удалил пункт руками, но скомпилировал с фичами.

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 11 месяцев
  • Сообщений: 3780
  • Репутация:27

    [+] [-]
  • Откуда: BG
AZJIO, меня лишь одна просьба.
Можно сделать колонку с обозначении (без претенсии какого) состояние диска, ок или нет, да пусть и не совсем точно.
Идея такая. На сервис запускаю вин пе и быстро открываю ChkDskGui. Он уже почти все показывает про дисков, кроме их состояние.
Я так или иначе каждый раз открываю HDSentinel, чтоб смотреть смарт, но он намного медленнее открывается.
Но если возможно не меню, а просто индикация. Если увижу, что проблемма есть, я уже могу пользоваться всякими другими проффесиональными программами (HDSentinel, Victoria, HDDarts) для тестирования данного диска. Тут просто как лампочка красная только если проблем замечен. aa
И если возможно GPT/MBR показывать для дисков, тоже бы неплохо. Остальное супер получилось.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
78468 GPT/MBR
Есть WinAPI-функции, по крайней мере, это не так как я думал ранее, что надо читать начало диска и анализировать структуру данных, но пока не разобрался.
На счёт здоровья не осилю, тут нужен именно спец по дискам, который бы обозначил критерии, был опыт работы с кучей дисков разного состояния. Да и вообще эти проги здоровья иногда показывают здоровым диск, который медленно работает и наоборот отличный диск вроде, а он его как средний или плохой показывает. Вот у меня после проблемы с кабелем он мог повысить параметр перечитывания данных или снижения скорости ради считывания, а на самом деле меняешь шлейф и диск отлично работает, а в параметре пишет что превысил значение до крайности. Так что кроме температуры я не вижу там ничего интересного, но для температуры программный код не был оптимизирован, то есть выкинуто всё и оставлено только запрашиваемый атрибут, там он в разы сократится.

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 11 месяцев
  • Сообщений: 3780
  • Репутация:27

    [+] [-]
  • Откуда: BG
AZJIO, согласен, что показания смарта неточные, но они всегда были такими. ab aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    WindR
  • 327
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 26
  • Репутация:3

    [+] [-]
AZJIO, Можно ещё добавить снятие галки с проверяемого диска по успешному окончанию проверки?

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 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
  • 20829
  • Стаж: 5 лет 7 месяцев
  • Сообщений: 23
  • Репутация:0

    [+] [-]
AZJIO,
У меня есть два диска. Один MBR, другой GPT.
Диск GPT упоминается утилитой как MBR. (55 AA)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 9 месяцев
  • Сообщений: 1322
  • Репутация:127

    [+] [-]
cormas02, другим EXE проверь GPT скрин покажи, в начале там есть "EFI PART" если нет, посмотри в HxD следующие 512 байт, в коде на С++ там для GPT захватывает 4096 байт. Я могу первым проверять GPT, а потом MBR, а на данный момент сначала MBR, а потом GPT, может у GPT тоже 55 AA, странно.

Страница 26 из 34


Показать сообщения:    

Текущее время: 27-Ноя 05:23

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы