информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Пытаюсь прочитать из драйвера сектор HDD 17.03.03 18:07  Число просмотров: 1089
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вот столкнулся с проблемой....
> Пытаюсь прочитать из драйвера vxd сектор HDD
> Через порт....
>
> Так вот чо-то не работает этот код....
> и не работает именно из драйвера,но если сделать его в виде
> простого досовского экзешника - и запустить из чистого доса
> - то
> все работает как надо....а если тот же самый экзешник
> запустить
> из-под вин98,то прога тоже не работает....не читается
> сектор
> В ax оказывется значение 0ffh
>
> mov dx,1f6h
> mov al,0a0h
> out dx,al
>
> mov dx,1f2h
> mov al,1
> out dx,al
>
> mov dx,1f3h
> mov al,2
> out dx,al
>
> mov dx,1f4h
> mov al,0
> out dx,al
>
> mov dx,1f5h
> mov al,0
> out dx,al
>
> mov dx,1f7h
> mov al,21h
> out dx,al
>
> in al,dx
>
> В чем дело может быть? Я просто не представляю....
В винде в порты пишешь не только ты. Если хочешь читать напрямую - пиши свой дривер контроллера и тогда тебе никто мешать не будет :-))) Ну или в крайнем случае запрети ВСЕ прерывания. Вот только состояние контроллера все равно может быть не таким как ты ожидаешь и он не захочет выполнять твои команды. А также состояние контроллера после того как ты сделал все что надо может быть не таким, как ожидает винда (вот это совсем плохо - контроллер может не захотеть выполнять команды винды). Кроме того надо бы глянуть в TSS а не виртуальные ли это порты (я не уверен что это действительно сделано, но даже для ring0 кода можно запретить писать в некоторые порты с последующим вызовом обработчика)

> Вот кстати пытался реализовать через VxDCall
> IFSMgr_Ring0_FileIO
> Ну тут ваще грабли....просто не ожидал....
> Или ддк для вин98 такое дурное....
>
> Короче константа R0_READABSOLUTEDISK в ifs.inc определена
> как 0dd00h,
> то есть слово и помещать его нужно в регистр....ah....
> Натурально в хэлпе сказано что в al должен быть номер диска
> (0=A,1=B,2=C....)
> Так вот если записать код вот так:
Я под 9х драйвера не писал, но все-таки меня смущает R0 в названии. Вполне возможно что предполагается наличие R1, R2 и т.д. И таким образом номер дисковода как раз окажется в al

> mov ax,R0_READABSOLUTEDISK (щас ax=0dd00h)
> ;без этой строчки***//mov al,1
> mov ecx,1
> mov edx,0
> mov esi,OFFSET32 rx_buff
> VxDCall IFSMgr_Ring0_FileIO
>
> То натурально читается заданный сектор с диска A - из сайса
> я видел при отладке
> драйвера....а вот если в al что-нить написать*то выдает
> ошибки....
А у тебя есть второй дисковод?
Насколько я помню еще с MSDOS-и винты начинались с 0x80. То бишь C: - 0x80, D: - 0x81 и т.д.. Контора то та же. Может и в 9x то же самое.

> Это чо микрософт так пошутил или я торможу?
> Как можно решить такое?
Не знаю. Я бы на твоем месте еще почитал документацию. У других-то людей получается. Хотя мелкософт - любитель приколов, не спорю. Но большинство их приколов вполне нормально задокументированы.
<programming>
Пытаюсь прочитать из драйвера сектор HDD 17.03.03 07:51  
Автор: ?? Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот столкнулся с проблемой....
Пытаюсь прочитать из драйвера vxd сектор HDD
Через порт....

Так вот чо-то не работает этот код....
и не работает именно из драйвера,но если сделать его в виде
простого досовского экзешника - и запустить из чистого доса - то
все работает как надо....а если тот же самый экзешник запустить
из-под вин98,то прога тоже не работает....не читается сектор
В ax оказывется значение 0ffh

mov dx,1f6h
mov al,0a0h
out dx,al

mov dx,1f2h
mov al,1
out dx,al

mov dx,1f3h
mov al,2
out dx,al

mov dx,1f4h
mov al,0
out dx,al

mov dx,1f5h
mov al,0
out dx,al

mov dx,1f7h
mov al,21h
out dx,al

in al,dx

В чем дело может быть? Я просто не представляю....

Вот кстати пытался реализовать через VxDCall IFSMgr_Ring0_FileIO
Ну тут ваще грабли....просто не ожидал....
Или ддк для вин98 такое дурное....

Короче константа R0_READABSOLUTEDISK в ifs.inc определена как 0dd00h,
то есть слово и помещать его нужно в регистр....ah....
Натурально в хэлпе сказано что в al должен быть номер диска (0=A,1=B,2=C....)
Так вот если записать код вот так:

mov ax,R0_READABSOLUTEDISK (щас ax=0dd00h)
;без этой строчки***//mov al,1
mov ecx,1
mov edx,0
mov esi,OFFSET32 rx_buff
VxDCall IFSMgr_Ring0_FileIO

То натурально читается заданный сектор с диска A - из сайса я видел при отладке
драйвера....а вот если в al что-нить написать*то выдает ошибки....
Это чо микрософт так пошутил или я торможу?
Как можно решить такое?
Пытаюсь прочитать из драйвера сектор HDD 17.03.03 18:07  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вот столкнулся с проблемой....
> Пытаюсь прочитать из драйвера vxd сектор HDD
> Через порт....
>
> Так вот чо-то не работает этот код....
> и не работает именно из драйвера,но если сделать его в виде
> простого досовского экзешника - и запустить из чистого доса
> - то
> все работает как надо....а если тот же самый экзешник
> запустить
> из-под вин98,то прога тоже не работает....не читается
> сектор
> В ax оказывется значение 0ffh
>
> mov dx,1f6h
> mov al,0a0h
> out dx,al
>
> mov dx,1f2h
> mov al,1
> out dx,al
>
> mov dx,1f3h
> mov al,2
> out dx,al
>
> mov dx,1f4h
> mov al,0
> out dx,al
>
> mov dx,1f5h
> mov al,0
> out dx,al
>
> mov dx,1f7h
> mov al,21h
> out dx,al
>
> in al,dx
>
> В чем дело может быть? Я просто не представляю....
В винде в порты пишешь не только ты. Если хочешь читать напрямую - пиши свой дривер контроллера и тогда тебе никто мешать не будет :-))) Ну или в крайнем случае запрети ВСЕ прерывания. Вот только состояние контроллера все равно может быть не таким как ты ожидаешь и он не захочет выполнять твои команды. А также состояние контроллера после того как ты сделал все что надо может быть не таким, как ожидает винда (вот это совсем плохо - контроллер может не захотеть выполнять команды винды). Кроме того надо бы глянуть в TSS а не виртуальные ли это порты (я не уверен что это действительно сделано, но даже для ring0 кода можно запретить писать в некоторые порты с последующим вызовом обработчика)

> Вот кстати пытался реализовать через VxDCall
> IFSMgr_Ring0_FileIO
> Ну тут ваще грабли....просто не ожидал....
> Или ддк для вин98 такое дурное....
>
> Короче константа R0_READABSOLUTEDISK в ifs.inc определена
> как 0dd00h,
> то есть слово и помещать его нужно в регистр....ah....
> Натурально в хэлпе сказано что в al должен быть номер диска
> (0=A,1=B,2=C....)
> Так вот если записать код вот так:
Я под 9х драйвера не писал, но все-таки меня смущает R0 в названии. Вполне возможно что предполагается наличие R1, R2 и т.д. И таким образом номер дисковода как раз окажется в al

> mov ax,R0_READABSOLUTEDISK (щас ax=0dd00h)
> ;без этой строчки***//mov al,1
> mov ecx,1
> mov edx,0
> mov esi,OFFSET32 rx_buff
> VxDCall IFSMgr_Ring0_FileIO
>
> То натурально читается заданный сектор с диска A - из сайса
> я видел при отладке
> драйвера....а вот если в al что-нить написать*то выдает
> ошибки....
А у тебя есть второй дисковод?
Насколько я помню еще с MSDOS-и винты начинались с 0x80. То бишь C: - 0x80, D: - 0x81 и т.д.. Контора то та же. Может и в 9x то же самое.

> Это чо микрософт так пошутил или я торможу?
> Как можно решить такое?
Не знаю. Я бы на твоем месте еще почитал документацию. У других-то людей получается. Хотя мелкософт - любитель приколов, не спорю. Но большинство их приколов вполне нормально задокументированы.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach