Microsoft Developer Tools
Microsoft typically releases supporting tools (compilers, libraries, and the like) for developers to write code that targets its technologies. These releases are referred to as development kits. For example, there is a software development kit (SDK) for developers of Windows Phone applications, a .NET SDK that contains tools to write and sign code for the .NET Framework, an Xbox development kit (XDK) for game developers, and so on. Many of these development kits, including the .NET and Windows Phone SDKs, are available as free downloads from the Microsoft Download Center at http://www.microsoft.com/downloads.
The Windows team at Microsoft also ships two important software development kits that include many of the tools presented in this book: more specifically, the Windows Driver Development Kit (DDK), which contains the build environment used to compile all the native C++ code samples in the book's companion source code, and the Windows Software Development Kit, which contains the Windows debuggers and Windows Performance Toolkit. Both of these development kits are free and available for download from the Microsoft Download Center.
The Windows DDK (WDK)
Each release of Windows is accompanied by a driver development kit targeted for use by Windows driver developers, which contains the headers, libraries, and tools needed for building drivers, as well as several code samples for writing WDM, KMDF, and UMDF drivers.
One of the most useful features included with this kit is a full-blown build and development environment that can be used not only for driver development but for any kind of C/C++ development. It includes C/C++ compilers and many other native development frameworks, including the STL (Standard C++ Template Library) and ATL (Active Template Library for building COM servers) template libraries and their respective implementation headers.
The native C++ code samples from the companion source code use a small portion of ATL that provides support for smart pointers and basic string and collection operations (arrays, hash tables, and so on). Although ATL also comes with the Microsoft Visual Studio suite, the build environment of the DDK was chosen for this book's companion source code so that readers without Visual Studio can follow the case studies and experiments presented in this book.
The Windows SDK
Another important development kit shipped to support new Windows releases is the Windows SDK. Microsoft sometimes ships more than one SDK version per major Windows release: for example, versions 7.0 and 7.1 of the SDK target Windows 7 developers, with version 7.1 bringing many improvements to some of the key tools covered in this book.
The Windows SDK contains useful documentation and samples for building applications on Windows, as well as the public (official) header files and import libraries that are required for compiling your native Windows applications. In addition, the Windows SDK also contains two of the main debugging and tracing tools covered in this book—namely, the Windows debuggers package and Windows Performance Toolkit.
Step-by-step instructions for how to acquire and install those SDK tools will be provided when they're introduced in the following parts of this book so that they're closer to where you will end up needing them.