>> Homepage
>> Audience
>> Topics
>> Overview
>> CD Contents
>> Bibliography

This book is intended for system programmers who want to exploit the features of their target operating system to the max. First disclaimer: If the target platform of your software is Windows 95, 98, or Me (Millennium Edition), don't read any further. Due to the architectural differences of the Windows 9x/Me and NT/2000 platforms, you won't have any benefit from reading this book. Second disclaimer: I am not going to write anything about the Alpha processor or multi-processor systems - I will target the 32-bit Intel i386 single-processor platform exclusively. Third disclaimer: Be aware that this text is not written for the faint-hearted. You will be faced with programming techniques the average Win32 programmer hasn't ever seen before. The Windows 2000 kernel is an entirely different world, bearing very little resemblance to the Win32 subsystem built upon it. Some of the interfacing techniques introduced towards the end of the book might be new even to experienced kernel-mode programmers. Let me put it this way: This is the book your high-school teachers and Microsoft representatives have always warned you about!

If you are still reading on, you are obviously an open-minded, courageous person who wants to know everything about the things lurking beneath the surface of the Windows 2000 operating system. That's great! Even if you won't use the know-how you gain from this book on an every-day basis, you will certainly benefit from it continuously. Knowing what is going on under the surface of an application interface is always advantageous. It facilitates debugging and optimization, and helps avoiding unwanted side effects caused by misconceptions of the hidden mechanics of the system.

The only expertise I'm expecting from my readers is "talking C" fluently, and basic knowledge of Win32 programming. If you have already written kernel-mode drivers, you're in an even better position, but that's not a requirement. You will find an introduction to kernel-mode driver programming in this book, telling you everything you need to know within its scope. However, please note that this is not a comprehensive kernel-mode tutorial. If you are specifically interested in kernel-mode driver development, please get one of the good books that deal with this topic exclusively (e.g. Viscarola & Mason 1999, or Dekker & Newcomer 1999).

In some chapters of this book, I make heavy use of inline assembly language (ASM), because this was the only feasible way to get things done. I don't expect you to have thorough ASM programming experience, but a basic knowledge of ASM is certainly helpful here. If you have never written a line of ASM code, you might get somewhat uneasy while reading these chapters, or you might even choose to skip them entirely. However, I encourage you to read at least parts of them, only skipping the subsections that explain the details of the ASM code. Because the ASM code snippets used in the samples are always well encapsulated in C function wrappers, you can usually ignore their internals and still benefit from the remaining material that surrounds them.

>> Back to top of page
 

   December 17th, 2000 // Sven B. Schreiber