Перейти к содержанию

Звуки Которые Выдаёт Умирающие Хард-Диски


Рекомендуемые сообщения

marinovsoft

Какой вы агрессивный человек... Шлак не шлак, приведите примеры её отказа или недостатка, а просто обзываться не хорошо :o Привёл краткий пример восстановления. Не уж то что-то не так? и ничего я ниоткуда не списывал, всё "как есть" и скрины мои! Вместо того чтобы обзывать прогу и меня ПРщиком, коли вы такой посвящённый сказали бы просто, что лучше :huh:

я в шоке, терпения вам молодой человек.

В этой проге есть ведь свои + :

Простое меню всего 4 пункта. да и результаты не плохие!

И вы правда думаете непросвящённый человек будет читать ту ссылку что вы дали ? :rolleyes: голова распухнет. не так поправьте.

Изменено пользователем GIN
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Переходим на личности? А-й,яй,яй. Учите матчасть и исследуйте программы. А для начала прочтите статью.

вы просите сказать что лучше - пожалуйста - ссылочки у меня в подписи

Я не использую инструменты, о неэффективности которых я знаю заведомо.

кусок кода

чтение секторов

ReadSector	proc far		; CODE XREF: ScanDrive+1DAp
				; ScanDrive+2E0p ...

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_5		= byte ptr -5
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  6
_Drive_Number	= byte ptr  0Ah
arg_6		= word ptr  0Ch

	enter	18h, 0
	push	si
	mov	[bp+var_18], 10h
	mov	[bp+var_16], 1
	mov	ax, [bp+arg_6]
	mov	[bp+var_14], ax
	mov	ax, ds
	mov	[bp+var_2], ax
	mov	ax, [bp+var_2]
	mov	[bp+var_12], ax
	mov	eax, [bp+arg_0]
	mov	[bp+var_10], eax
	mov	[bp+var_C], 0
	lea	ax, [bp+var_18]
	mov	[bp+var_4], ax
	mov	ax, [bp+var_4]
	mov	[bp+var_8], ax
	mov	dl, [bp+_Drive_Number]
	mov	dh, 0
	mov	ch, 0
	mov	cl, 0
	mov	al, 0
	mov	ah, 42h	; 'B'
	mov	si, [bp+var_8]
	int	13h		; Int 13h (BIOS	disk - Extended	Read )
				; ah=42h
				; DL=drive_number
				; ds:si=disk_address_packet
	mov	[bp+var_5], ah	; if error AH<>0
				;
	mov	al, [bp+var_5]
	jmp	short $+2
	pop	si
	leave
	retf
ReadSector	endp

Запись секторов

WriteSector	proc far		; CODE XREF: ScanDrive+2F7p
				; ScanDrive+31Cp ...

var_18		= word ptr -18h
var_16		= word ptr -16h
var_14		= word ptr -14h
var_12		= word ptr -12h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= word ptr -8
var_5		= byte ptr -5
var_4		= word ptr -4
var_2		= word ptr -2
arg_0		= dword	ptr  6
arg_4		= byte ptr  0Ah
arg_6		= word ptr  0Ch

	enter	18h, 0
	push	si
	mov	[bp+var_18], 10h
	mov	[bp+var_16], 1
	mov	ax, [bp+arg_6]
	mov	[bp+var_14], ax
	mov	ax, ds
	mov	[bp+var_2], ax
	mov	ax, [bp+var_2]
	mov	[bp+var_12], ax
	mov	eax, [bp+arg_0]
	mov	[bp+var_10], eax
	mov	[bp+var_C], 0
	lea	ax, [bp+var_18]
	mov	[bp+var_4], ax
	mov	ax, [bp+var_4]
	mov	[bp+var_8], ax
	mov	dl, [bp+arg_4]
	mov	dh, 0
	mov	ch, 0
	mov	cl, 0
	mov	al, 0
	mov	ah, 43h	; 'C'
	mov	si, [bp+var_8]
	int	13h		; DISK -
	mov	[bp+var_5], ah
	mov	al, [bp+var_5]
	jmp	short $+2
	pop	si
	leave
	retf
WriteSector	endp

Можете начинать писать свой аналог этого шлака

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

И вы правда думаете непросвящённый человек будет читать ту ссылку что вы дали ? голова распухнет. не так поправьте.

так вот и не надо непосвященным впаривать шлак

Если и вам ничего не понятно - так и скажите.

Что сделает эта прога, если винт детектится с LBA=0?

Хотите дельный совет - вбейте в гугле ATAPI-8 и почитайте стандарт. Токмо там на инъязе, если шпрехаете может и поймете.

Ссылка на комментарий
Поделиться на другие сайты

цитата из ссылки (Кроме того, физическое наличие диска не проверяется и во время работы программы.

Если HDD "завис", остановился или находится в Sleep-режиме, перестав реагировать

на команды, то программа, не "заметит" этого и будет "лечить" HDD, даже физически

отсоединенный от компьютера (по методу Кашпировского - на расстоянии).)

Верю в то что написано но в версиях 51 и 71 это не сошлось, когда винт вставал программа отключалась :unsure: Может её дорабатывают?

Ваша статейка то 17-12-2006 (D-M-Y) ©NazYura Может что и поменялось, а может и нет. но цитату в блоге поправлю :P

Изменено пользователем GIN
Ссылка на комментарий
Поделиться на другие сайты

Запустите скан, выдерните питание винта. О результатах расскажете.

Ссылка на комментарий
Поделиться на другие сайты

Я все рассматриваю в контексте версии 1.51

Там в коде такие проверки

	call	near ptr ReadSector
	add	sp, 8
	or	al, al		; Была ошибка?
	jz	loc_1847D

больше никаких проверок нет. ReadSector вызывается несколько раз, проверка каждый раз примерно такая же.

После WriteSector вообще нет проверок.

Автор статьи - Назаренко Юрий, известный среди ремонтников HDD человек.

С IDA Pro дружите, ассемблер x86 понимаете?

Ссылка на комментарий
Поделиться на другие сайты

marinovsoft

Ставил версию 71, опасения не подтвердились. после прекращения подачи питания программа встала :huh: Может автор программы тоже читал эту критику ^_^ ИМХО исправился :blush:

Ссылка на комментарий
Поделиться на другие сайты

Сейчас загляну в 1.71, что там еще этот фокусник придумал.

Поведение программы все равно некорректно, программа должна отработать эту ситуацию в штатном режиме и сказать пользователю об возникших проблемах.

Ушел в IDA

Ссылка на комментарий
Поделиться на другие сайты

marinovsoft

Ну если и правда что программа хуже некуда? :( если уж действительно такая ужааасная то лучше и правда удалить с блога, просто у меня ещё не разу 71 не косячила.. а 51 было..- висла

Изменено пользователем GIN
Ссылка на комментарий
Поделиться на другие сайты

Можно файлики с загрузочной флешки версии 1.71 куда-нибудь выложить? Просто ни болванок ни флешек под рукой нет, и распаковать не получается :(

Ссылка на комментарий
Поделиться на другие сайты

marinovsoft

Да без проблем. только я выложу саму программу без boot файлов. и это будет только завтра сейчас я в офф куча дел . вы уж простите. но интересная у нас тут беседа, глядишь либо выведем прогу на чистую воду, либо найдём ещё 1 хороший софтик :D

Ссылка на комментарий
Поделиться на другие сайты

ммм прошу прощения что влезаю в грязных сандалиях, но в фрагменте кода чтения сектора выше, как мне представляется, нужно не просто возвращать значение в ah в качестве результата функции, или кода ошибки, а проверять-таки CF, поскольку в доке пишут, что признаком ошибки является CF, а уже при этом в ah содержится код ошибки.

т.е. я не уверен, всегда ли ah равен нулю в случае успешного выполнения.

оба фрагмента 100% написаны были не на ассемблере, а на си, и хотя я не религиозен в выборе языка программирования, уже одно то, что в низкоуровневой задаче использован не ассемблер, не внушает большого доверия к программе.

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

Ссылка на комментарий
Поделиться на другие сайты

К сожалению исходника у меня нет, приходится довольствоваться экзешником. Эти подпрограммы 100% были написаны на встроенном в Borland C++ 5 ассемблере, иначе для вызова 13h прерывания использовалась бы библиотечная функция int86, а тут как видно все вручную. При работе с HDD на сервисы BIOS рассчитывать не стоит, тем более в системных программах. Все достойные программы работают через порты напрямую.

По поводу флажков и регистров должно быть так

IBM/MS INT 13 Extensions - EXTENDED READ

AH = 42h

DL = drive number

DS:SI -> disk address packet (see #00272)

Return:

CF clear if successful

AH = 00h

CF set on error

AH = error code (see #00234)

disk address packet's block count field set to number of blocks

successfully transferred

IBM/MS INT 13 Extensions - EXTENDED WRITE

AH = 43h

AL = write flags

---v1.0,2.0---

bit 0:

Verify write

bits 7-1 reserved (0)

---v2.1+ ---

00h,01h write without verify

02h write with verify.

DL = drive number.

DS:SI -> disk address packet (see #00272)

Return:

CF clear if successful

AH = 00h

CF set on error

AH = error code (see #00234)

disk address packet's block count field set to number of blocks

successfully transferred

Чтобы написать прогу для работы с HDD, надо взять hddspeed который написал Михаил Радченко в 97 году и которая распространяется в исходных кодах на паскале, допилить туда ATAPI-8 и выложить на всеобщее обозрение опять же в исходных кодах. А еще лучше не выкладывать, а спрятать. Просто в процессе ее допиливания вы много опыта поимеете, ну и гемороя тоже, что сказать.

Ссылка на комментарий
Поделиться на другие сайты

mil_alex

Опять же я только констатирую факт, прога сделала на что была расчитана... Ни один винт не помер, файлы целы. просто эта программа в отличии от тех которые шли от производителя, не висла на битых секторах :( были реальные проблемы, вся система вставала как вкопанная, а этой хоть бы хны :unsure: мистика :blink:

Ссылка на комментарий
Поделиться на другие сайты

смеюсь как обкуренная первоклассница.

прога тупо не проверяет CF на выходе int 13h - откуда она вообще узнАет про ошибки чтения?

хорошо, если ah всегда индицирует состояние ошибки.

а если нет? я привык доверять Ральфу Брауну больше, чем Пете Водокачкину...

Ссылка на комментарий
Поделиться на другие сайты

Я сейчас уже забыл, у меня нет старого дизассемблированного проекта, там я больше, чем сейчас накопал. Но что-то мне подсказывает, что он пишет в дефектный сектор тот же мусор, что из него прочитал, хотя по стандарту сказано, что в случае ошибки там может лежать что угодно, но только не данные. Конкретно не могу сослаться, т.к. нужно дизассемблировать код BIOS и смотреть какая именно команда на чтение сектора там используется.

Ссылка на комментарий
Поделиться на другие сайты

mil_alex

Смех подливает жизнь :D но факт на лицо, до проги битые сектора определялись всеми прогами после чего система либо висла, либо страшно тормозила. После проги все симптомы прошли, файлы и контрольные суммы остались неизменны. я не делаю рекламу. говорю как было. Смысл мне врать ? :huh:

Ссылка на комментарий
Поделиться на другие сайты

Вы не подумайте ничего навязывать не хочу. просто интересно. и правда отказов жестака, после проги прошло 3 месяца, небыло.

Да согласен с marinovsoft есть "огрехи". но какого она работает :unsure: откидывал питание прога тормозилась, конечно жаль что нет всяких системок типа ERROR, но там вообще ничё нет) only scan and regenerate, and if we'll find better program, i'll throw this util thru the window... but i have no complaints to it now :ph34r:

Ссылка на комментарий
Поделиться на другие сайты

Два одинаковых винта

WD 3200aaks

При подкючении к сата разъему на мат плате, в качестве второстипенного винта, видны в биосе, но когда доходит дело до загрузки ОС (грузится с исправного IDE винта), то система подвисает в процессе загрузки

При подключении "на горячую" так же подвешивают систему.

Попробовал подключить к PCI сата контроллеру, который идет отдельно планкой.

Первый винт не подвесил систему при загрузке ос и вообще работает как исправный.

Второй винт привел к зависанию во время загрузки ос, но при подключении "на горячую" к PCI сата контроллеру, определился корректно, удалось слить с него данные, правда скорость копирования и вообще открытия файлов на винте была катострофически медленной.

Как я понимаю, раз попались сразу два одинаковых винта со схожим глюком, значит неисправность топовая.

Можно ли исправить?

Ссылка на комментарий
Поделиться на другие сайты

Penicillin

Проверь любой прогой на состояние поверхности и на наличие ошибок. Если есть возможность скачай у друга Hiren's Boot CD и запускай с диска или флешки на своём из под Биоса в наборе идут порядка 10-15 прог для ХДД такие как Виктория, Hdd Erase, WD utility GwScan и прочее добро) запусти для начала GwScan особо он ничего не исправляет просто проверяет на ошибки. ну вопщем в этой сборке всё понятно)

Изменено пользователем GIN
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...