Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Дисковый ввод/вывод  (Прочитано 7676 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sands
Помогающий

ua
Offline Offline

« : 13-09-2006 15:16 » 

И снова здраствуйте. Теперь вопросец посложнее будет, однако коллективный разум на то и коллективный, чтоб непростые впросы проще решались.
Суть вопроса: Как можно определить, что к диску происходит запрос на запись/считывание информации, или возможно есть прямая функция определения частоты подобных запросов? Оговорюсь, что данная фича должна работать как под линейкой XP/NT так и под старой доброй Windiws 98.
Заранее спасибо всем приобщившимся к решению вопроса.
Записан
Dimitry
Гость
« Ответ #1 : 13-09-2006 16:55 » 

Да уж... непростой вопросик. Под WinNT(2K, XP) частоту подобных запросов действительно можно опросить. А вот под старой доброй 9x я пока видел только решения, использующие драйверы ядра (*.vxd). Драйвер имеет возможность установить hook-функцию, которая будет вызываться при обращению к файловой системе(и, даже может блокировать его).
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #2 : 14-09-2006 13:37 » 

Dmitry, если не тяжело, не мог бы ты написать приблизительные действия для выполнения опроса диска под WinNT, пусть ето не совсем то, но уже не ничего.
Записан
Dimitry
Гость
« Ответ #3 : 15-09-2006 20:01 » 

Доброго времени суток!

На данный момент, хотелось бы уточнить - что подразумевается под запросом. Если нас интересует изменение файловой системы, то можно воспользоваться функциями FindFirstChangeNotification(), FindNextChangeNotification(), которые присутствуют во всех Win32-системах.

В WinNT, начиная с версии 5.0, появилась функция GetProcessIoCounters(), которая возвращает 6 счётчиков операций ввода вывода для отдельного процесса.

Примеров кода пока не выкладываю - полагаю, что воспользоваться этими функциями не должно принести значительных сложностей. Однако, если они возникнут - то, думаю, выложить код не составит большого труда.
Записан
Dimitry
Гость
« Ответ #4 : 15-09-2006 20:14 » 

P.S. Есть бесплатная утилитка, которая показывает дисковую активность в реальном времени - File Monitor. Однако, как для Win9x, так и для WinNT она использует драйвер режима ядра.

Для Win9x ранее она была выложена даже с исходниками, а сейчас похоже их убрали... Но, думаю, если уж очень нужно - то можно сесть и за IDA, чтобы определить, как же она на самом деле работает - достаточно понять как работает часть, не являющаяся драйвером - а драйвер, в принципе, у неё можно и позаимствовать...

Вот ссылка на страницу с этой утилиткой(увы, страница на английском): http://www.sysinternals.com/Utilities/Filemon.html
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #5 : 16-09-2006 09:21 » new

Щас мы все вышесказанное поковыряем!!! Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines