Reviews

Product Review: WinDriver

WinDriver 6.03
starting at $1999
Jungo
San Jose, California
(877) 514-0537
www.jungo.com

I have so far been fortunate (I think) in that my career has not included any serious device driver development. Oh, like many another developer I've poked at various versions of the Windows DDK over the years; I can remember staring at a stack of documentation long about Windows 3.0 time and wondering if I'd ever grasp what it was all about.

Well, the folks at Jungo have taken pity on me and others who might some day need to face the task of developing a device driver with their WinDriver product. Available in a variety of flavors targeting different buses (ISA, PCI, ISB) and Operating systems (Windows 98/ME/NT/2000/XP/2003, Linux, Solaris, VcWorks, Windows CE), WinDriver is designed to take the pain out of driver development by building most of the code for you. You can think of WinDriver as a sort of universal device driver that you can customize with your own code.

The whole process is designed to be as painless as possible. Install WinDriver and connect the device to your box, and let WinDriver detect it. Then you can actually work with the hardware before writing any driver code at all, reading and writing IO ports and memory ranges, among other resources. When you've got a handle on how it's all working, tell DriverManager to generate code for you (it builds code to target a variety of Microsoft or Borland C++ compilers). The code actually runs and can be debugged in user mode, but you can move performance-critical sections into kernel mode when you're satisfied.

WinDriver defines a wide variety of APIs that your code can use to communicate with the generic driver layer. For example, you can read the PnP registers of an ISA device, or register a callback function to be used when your device gets a power status notification message. All of this is well-documented in a nearly 400-page manual (which, in a nostalgic touch for those of us who've been around for a while, is spiral bound to lie flat). WinDriver's APIs provide you with a level of insulation from the underlying platform, so your code only needs to be recompiled (not rewritten) to move between any of the supported operating systems.

WinDriver is definitely not inexpensive; depending on the variety of systems you need to support, and your licensing and support options, you could easily spend in the mid five figures on this software. But then, you could spend that much on a device driver engineer without getting someone who could competently write a driver from scratch. Given that you can download a 30-day trial, it's worth checking this out if your needs run to such things.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.