Thursday, March 10, 2011

Book Recommendation #1

Today, I just wanted to take the time out to recommend a good book to you all. It's titled "Inside Microsoft Windows 2000 (Third Edition)" by David A. Solomon and Mark E. Russinovich. If you're new to the Windows NT's internals or even the architecture in of windows in general, I'd recommend this book. Don't let the date fool you though. If you plan on writing a driver for Win2k/XP, I highly recommend this one, and even if your target platform is Vista/7, this will still be a great learning aid for you.

I just bought the book last week and it came in the mail a few days ago. The book appears to be well structured and comes with an E-book as well as other tools that will assist you in writing your driver (whatever type it might be).

Wish I could write more on this book, but the comp lab is closing. If you can afford a newer book, by all means go ahead, but don't let the date throw you off as most of this stuff still applies to the later OSes.

Happy Coding,


Friday, February 25, 2011

About My Driver Development Blog

Hi everybody, welcome to my driver dev blog!

1. Q: What is this blog and why did you start it?

A: Hopefully this blog will be of interest to some of you out there and maybe ease the pain of getting started with your own drivers for Windows. TBH, there doesn't appear to be many resources on driver programming for windows these days, so hopefully my blog might shed some light on the subject. When I got started, I did lots of google searching and didn't find too much except for a handful articles and a fraction of those articles contained anything code related. During my driver development process, I plan to make my sources public and well commented so everyone can learn.

Another reason was when I announced one of my driver projects, someone suggested that I start a blog or something to show progress on it so others can learn how I did it. I thought it was a great idea. Should have done this earlier!

Keep in mind that programing a device driver is far more difficult than programming a standard Win32 application and requires a good knowledge of Windows internals. Before getting started, at least read up on some documentation from the Windows DDK (now known as WDK) and MSDN. They will save you much hassle in the beginning.

2. Q: What version of Windows do you plan to write drivers for?

A: TBH, I'm mainly writing drivers for Win2k/XP for the time being. Since I'm without a computer that actually runs Windows 7 atm, XP is all I have to work with atm. Furthermore, my inspiration for writing a driver was due to the lack thereof for a certain video card under Windows 2k/XP. I'll be happy to write drivers for Windows 7, but right now, I can't afford a new PC because I'm unemployed (this economy sucks).

3. Q: Is there anything in paticular that you want to write a driver for?

A: Yes. My primary goal is to write a 3D accelerated driver for the NVIDIA Riva128[ZX] series of video cards (PCI and AGP). After Windows NT (version 4, IIRC), there have been no driver releases for this video card by NVIDIA and Win2k/XP users have never had a 3D accelerated driver for it. DirectDraw is accelerated, but Direct3D and OpenGL are not.

I have a fair bit of documentation on this video card and have studied it's internal workings for a long time now. I've even written some low level code to access it's PCI registers directly in a 32-bit DOS program in my spare time. In my next blog update, I'll get detailed about my upcoming Riva128 driver.

4. Q: Any other devices you'd like to write a driver for?

A: Yes. I was thinking about trying something like an input driver for an old Microsoft Sidewinder joystick. Not sure how much documentation exists out there, but I thought it might be worth a try.

5. Q: What drivers have you completed so far?

A: Since writing a driver is a complex process, and given the fact that I'm a very busy person, I haven't had the time to finish any drivers as of yet. I'm really anxious, but my primary target now is to get a job in this sluggish economy. It would be a great plus if I finished at least a few basic drivers to put on my resume.

Hopefully this will answer any basic questions you might have about my blog. As it continues to evolve, I'll post links to articles of interest as well as example code you can apply in your own drivers. Ta-ta for now!