dinnnngo Слив засчитан в очередной раз.
Что же Вы тут "Такой умный" до сих пор пасётесь?
Как говорится "Барабан на шею, свисток в ж***у и поезд на встречу"
Это видимо Вы такие программы пишите, "небожитель"?
... А вот и живой пример трудов программиста "небожителя"
--------------------------------------------------------------------------------
Start DLGDIAG V.409
=====================
1x6=A0 - Выбирается "Master"
1x7_50 - HDD в состоянии готовности
1x6=A0 - Выбирается "Master"
1x7=EC
Command: ATA-#6: IDENTIFY DEVICE - Читается паспорт диска
1x7_D0 - BUSY+DRDY+DSC
1x7_58 - Устройство готово к обмену данными
[****** Host READ Data From HDD ******]
7A42 FF3F 37C8 1000 0000 0000 3F00 0000 zBя?7И.....?...
0000 0000 4457 572D 4143 394A 3931 3131 ....DWW-AC9J9111
3437 2038 2020 2020 0000 0040 3A00 3331 47 8 ...@:.31
302E 4733 3331 4457 2043 4457 3038 4A30 0.G331DW CDW08J0
2D42 3030 4D46 3041 2020 2020 2020 2020 -B00MF0A
2020 2020 2020 2020 2020 2020 2020 1080 Ђ
....____________cutting____________....
1x7_50 - HDD в состоянии готовности
1x1_00 - Error Register без ошибок
1x7_50 - HDD в состоянии готовности
--------------------------------------------------------------------------------
На первый взгляд здесь нет ошибок, но...
Именно, при анализе паспорта, "небожитель" делает первую ошибку.
... Все модели, различных семейств, у любых производителей, имеют свой собственный
идентификационный номер (Model-ID) и (или) ревизию, которые, обычно, встроены в имя
и (или) серийный номер данной модели. Все эти данные, находятся в паспорте устройства.
Проанализировав паспорт, программа должна определить свою совместимость с устройством.
Если ID-номер, выходит за диапазон поддерживаемых моделей, то программа, должна выдать
сообщение о несовместимости и прекратить дальнейшую работу.
... Но, по всей видимости, программист сделал ошибку первокласника, проверив
только нижнюю границу диапазона поддерживаемых моделей, что в дальнейшем привело
к несовместимости vendor-команд, так-как, тестируемый HDD, входит в состав более
современного семейства, имеет другой набор vendor-команд и другую архитектуру SA.
--------------------------------------------------------------------------------
продолжение...
3x6=06 -- DevCtrl \_ Reset Drive
3x6=02 -- DevCtrl /
1x7_80 - BUSY
1x7_50 - HDD в состоянии готовности
1x1=57 1x2=44 1x3=43 1x4=00 1x5=00 1x6=A0 1x7=8A - Подается несовместимая vendor-команда !!!
Command: ATA-#6: Vendor specific commands (VS)
1x7_D0 - BUSY+DRDY+DSC
1x7_51 - !!! Error !!!
1x1_04 - Error Register = !!! ABORT !!! Устройство, чуть-ли не криком сообщает об ошибке...
--------------------------------------------------------------------------------
... но, мы-же "небожители", думает программист. На кой нам, проверять регистры статуса и ошибки...,
лучше, сразу начнем читать service-area...
--------------------------------------------------------------------------------
1x2=01 1x3=10 1x4=FC 1x5=FF 1x6=EF 1x7=20
Command: ATA-#6: READ SECTOR(S) #12
w/retry) - Попытка чтения отрицательных цилиндров...
1x7_D0 - BUSY+DRDY+DSC
1x7_51 - !!! Error !!!
1x1_10 - Error Register = !!! IDNF !!! - подумаешь... ID не нашел...
1x2=01 1x3=4F 1x4=FC 1x5=FF 1x6=EF 1x7=20
Command: ATA-#6: READ SECTOR(S) #12
w/retry) - Подсунем другой адресок...
1x7_D0 - BUSY+DRDY+DSC
1x7_51 - !!! Error !!!
1x1_10 - Error Register = !!! IDNF !!! - Вот ведь, разорался...
3x6=06 -- DevCtrl \_ Reset Drive - Ладно... попробуем еще разок...
3x6=02 -- DevCtrl /
1x7_50 - HDD в состоянии готовности
1x1_01 - Error Register = !!! AMNF !!!
1x1=57 1x2=44 1x3=43 1x4=00 1x5=00 1x6=A0 1x7=8A - Подается несовместимая vendor-команда !!!
Command: ATA-#6: Vendor specific commands (VS)
1x7_51 - !!! Error !!!
1x1_04 - Error Register = !!! ABORT !!!
1x2=01 1x3=10 1x4=FC 1x5=FF 1x6=EF 1x7=20
Command: ATA-#6: READ SECTOR(S) #12
w/retry)
1x7_51 - !!! Error !!!
1x1_10 - Error Register = !!! IDNF !!!
1x2=01 1x3=4F 1x4=FC 1x5=FF 1x6=EF 1x7=20
Command: ATA-#6: READ SECTOR(S) #12
w/retry)
1x7_51 - !!! Error !!!
1x1_10 - Error Register = !!! IDNF !!! - Вот-же блин, зараза...
3x6=06 -- DevCtrl \_ Reset Drive - Ну ничего... куда ты денешься... начнем все заново ...
3x6=02 -- DevCtrl /
1x7_50 - HDD в состоянии готовности
1x1_01 - Error Register = !!! AMNF !!!
1x6=AF 1x2=3F 1x7=91
Command: ATA-#5: Initialize drive parameters - проинициализируем параметры...
1x7_50 - HDD в состоянии готовности
1x1_00 - Error Register без ошибок - Слава те, Господи, в конце-концов...
1x6=A0 1x7=10
Command: ATA-#3: Recalibrate - рекалибруем его...
1x7_50 - HDD в состоянии готовности
1x2=01 1x3=00 1x4=00 1x5=00 1x6=E0 1x1=DA 1x4=4F 1x5=C2 1x7=B0 - Что там SMART-статус кажет ?
Command: ATA-#6: SMART OPERATIONS
1x7_50 - HDD в состоянии готовности
1x1_00 - Error Register без ошибок
1x4_4F \_ SMART-статус в норме...
1x5_C2 /
1x7_50 - Все хорошо
1x4=4F 1x5=C2 1x1=D4 1x2=01 1x3=81 1x7=B0 - Запустим-ка Self-тест... может потом, съест вендора ?
Command: ATA-#6: SMART OPERATIONS
1x7_51 - Self-тест не пройден, не поддерживается сей тест... а нам все по барабану
1x4=4F 1x5=C2 1x3=06 1x1=D5 1x7=B0 - Почитаем self-test log (прошлогодний)
Command: ATA-#6: SMART OPERATIONS
1x7_50 - Все хорошо вроде...
1x2=01 1x3=00 1x4=00 1x5=F0 1x6=EF \_ Может регистры плохо пишутся ?
1x2=01 1x3=00 1x4=00 1x5=F0 1x6=EF / Попробуем дважы записать адрес трека...
1x1=57 1x2=01 1x7=8A - ... и добавим кусочек от вендора - эдакий, "Vendor Cocktail"...
Command: ATA-#6: Vendor specific commands (VS) Баааа... Бааххх...
1x7_51 - !!! Error !!!
1x1_04 - Error Register = !!! ABORT !!! - Ой... что-то опять мимо... можа съел что-нибудь ?...
Cancell User
==============
Эх жаль... а ведь могло и получится что-нить... если-б юзер не прервал...