“Chishiki” is Japanese for “knowledge.” e-chishiki.com aims to bring software developers, information security professionals, IT executives and other IT pros a rich body of knowledge in the form of articles, interviews, tutorials and technical discussions. Our contributors are among the biggest names in the Indian IT industry and include noted authors, educators and practitioners.
Windows Device Driver Programming Series
A Windows Device Driver Primer (2/10): Device Driver Programming
Yashavant Kanetkar and Asang Dani
Device Drivers As Utilities
Drivers being a trusted extension of the OS are often used to do things that are normally not possible to do in application level code.
System utilities are good example of this. They often have an additional module in the form of a Device Driver that performs most of the low-level activities on the behalf of the utility.
For example, there are many monitoring utilities that contain an Application component and a Device Driver component. There are popular utilities like ‘Filemon’, 'Netmon' and 'Regmon' that monitor all the disk activities, network activities and registry activities taking place in the system. The Device Driver component of these utilities is responsible for generating a log of the activities, whereas, the Application component is responsible for displaying the log in proper format.
Another example of drivers being a part of larger software is the Anti-Viral software. This software takes help of driver programs to accomplish many of its activities like:
- Scanning memory of all running processes including the OS.
- Providing auto-protect feature which ensures that any program that is executed is first scanned for viruses. If a virus is found, the antiviral software stops the execution of the program.
Driver code can also be used to emulate physical hardware devices. For example, there are a lot of commercial and shareware utilities available that emulate a CD-ROM drive.
Drivers may also have to be written to modify the behaviour of existing drivers. For example, you might want to write a driver that interacts with the file system driver and encrypts/decrypts the data that is read/written from/to the disk.



