Copyright © 1998-1999 Mark Russinovich | |
Last Updated
October 14, 1999 v1.1 |
|
Introduction | Diskmon is a Windows NT
device driver/GUI combination that together log and display all process
activity on a Windows NT/2000 system. You can also minimize Diskmon to
your system tray where it acts as a disk light, presenting a green icon when
there is disk-read activity and a red icon when there is disk-write activity.
Diskmon works on NT 4.0 and Windows 2000. |
Installation and Use | Installing Diskmon is as
easy as unzipping it and typing, "diskmon." The GUI dynamically loads
the driver (based on code from the instdrv sample in the Windows NT DDK), which
begins monitoring all hard drives. The menus and toolbar buttons can be used to
disable event capturing, control the scrolling of the listview, and to save the
listview contents to an ASCII file. To have Diskmon function as a disk light in your system tray, select the Options|Minimize to Tray menu item, or start Diskmon with a "/l" command-line switch e.g. diskmon /l. To reactivate the Diskmon window double-click on the Diskmon tray icon. Read and write offsets are presented in terms of sectors (512 bytes). Events can be either timed for their duration (in microseconds), or stamped with the absolute time that they were initiated. The History Depth dialog can be used to specify the maximum number of records that will be kept in the GUI (0 signifies no limit). |
Sample Screenshot | This is a screenshot of Diskmon watching hard disk activity. |
Implementation |
Using standard filtering
techniques it is not possible for a dynamically loaded driver like
Diskmon to attach to hard disk device objects and see requests
originating in file systems.This is because file system drivers open disk
devices during system initialization and, unlike the I/O Manager, file system
drivers send IRPs directly at these devices. The I/O Manager allows for file
system filter drivers to attach to file system devices after initialization
because it checks for attached devices whenever it is going to send an Irp to a
file system, and will direct the Irps to them instead. Diskmon overcomes this limitation by using the technique I've developed of driver function interception. Diskmon locates a disk device's driver object and replaces the driver's dispatch entry points with its own. The Diskmon filter functions pass Irps it sees onto the hooked driver, and also intercepts completion routines in a similar way so that it can see the results of requests. . |