Skip to main content

DiskMon для Windows 2.01

Автор: Марк Руссинович (Mark Russinovich)

Опубликовано 1 ноября 2006 г.

Введение

DiskMon — это приложение, которое регистрирует и выводит сведения обо всех операциях с жестким диском, осуществляемых в системе Windows. Программу DiskMon можно свернуть в значок на панели задач, который исполняет роль индикатора диска: зеленый цвет обозначает операции чтения с диска, а красный — операции записи.

Программа DiskMon работает в NT 4.0 и в более поздних версиях ОС.


Установка и применение

Для установки программы DiskMon достаточно распаковать ее архив и ввести команду diskmon. В среде Windows NT графический интерфейс выполняет динамическую загрузку драйвера (на основе кода в образце instdrv из пакета DDK Windows NT), который приступает к слежению за работой всех жестких дисков. Для Windows 2000 и более поздних версий ОС компонент драйвера не предусмотрен — для получения данных об операциях с диском графический интерфейс обращается к средствам отслеживания событий ядра. Пункты меню и кнопки на панели инструментов позволяют включать и выключать фиксацию событий, управлять прокруткой списка и сохранять содержимое списка в ASCII-файле.

Для перевода программы DiskMon в режим индикатора диска на панели задач выберите команду Minimize to Tray (Свернуть в панель задач) в меню Options (Параметры) или вызовите DiskMon из командной строки с параметром /l (L в нижнем регистре) — «diskmon /l». Чтобы восстановить окно DiskMon, дважды щелкните значок DiskMon на панели задач. Чтобы создать ярлык программы Diskmon, создайте ярлык в папке Program Files\Startup, откройте его свойства ярлыка и введите в поле «Объект» путь к исполняемому файлу в кавычках, а параметр — вне кавычек:

«C:\Sysinternals Tools\Diskmon.exe» /l

Величины смещения чтения и записи указываются по секторам (по 512 байт). События могут идентифицироваться по продолжительности (в микросекундах) или снабжаться метками абсолютного времени запуска. В диалоговом окне «History Depth» (Глубина регистрации) можно указать максимальное количество записей, хранящихся в графическом интерфейсе (значение «0» снимает любые ограничения).

Снимок экрана DiskMon


Реализация в среде Windows NT 4

Стандартные методики фильтрации не позволяют динамически загружаемым драйверам, таким как DiskMon, прикрепляться к объектам жесткого диска и просматривать запросы, отправляемые из файловых систем. Дело в том, что драйверы файловой системы открывают дисковые устройства в ходе инициализации системы и, в отличие от диспетчера ввода-вывода, отправляют IRP этим устройствам напрямую. Диспетчер ввода-вывода допускает прикрепление драйверов-фильтров файловой системы к устройствам этой системы после инициализации; это связано с тем, он проводит проверку подключенных устройств перед каждой попыткой отправки IRP файловой системе и имеет возможность перенаправления IRP.

Программа DiskMon обходит это ограничение благодаря моей собственной методике перехвата функций драйверов. DiskMon находит объект драйвера дискового устройства и заменяет его точки входа диспетчеризации своими собственными. Функции фильтрации DiskMon передают обнаруживаемые запросы IRP подключенному драйверу и перехватывают процедуры завершения так, чтобы получить доступ к результатам обработки запросов.

Реализация в среде Windows 2000 и последующих версиях ОС

В Windows 2000 и более поздних версиях ОС программа обращается к средствам отслеживания событий ядра. Документация по отслеживанию событий содержится в комплекте разработчика Platform Microsoft; там же имеется исходный код программы TraceDmp, на которой основана Diskmon.

Реализация в среде Windows 2000 и последующих версиях ОС

В Windows 2000 и более поздних версиях ОС программа обращается к средствам отслеживания событий ядра. Документация по отслеживанию событий содержится в комплекте разработчика Platform Microsoft; там же имеется исходный код программы TraceDmp, на которой основана Diskmon.