Windows via C/C++, Fifth Edition by Jeffrey Richter and Christophe Nasarre
What's New in the Fifth Edition
In the past, this book has been titled Advanced Windows NT, Advanced Windows, and Programming Applications for
Microsoft Windows. In keeping with tradition, this edition of the book has gotten a new title: Windows via C/C++. This new
title indicates that the book is for C and C++ programmers wanting to understand Windows. This new edition covers more
than 170 new functions and Windows features that have been introduced in Windows XP, Windows Vista, and Windows
Server 2008.
Some chapters have been completely rewritten—such as Chapter 11, which explains how the new thread pool API should
be used. Existing chapters have been greatly enhanced to present new features. For example, Chapter 4 now includes
coverage of User Account Control and Chapter 8 now covers new synchronization mechanisms (Interlocked Singly-Linked
List, Slim Reader-Writer Locks, and condition variables).
I also give much more coverage of how the C/C++ run-time library interacts with the operating system—particularly on
enhancing security as well as exception handling. Last but not least, two new chapters have been added to explain how I/O
operations work and to dig into the new Windows Error Reporting system that changes the way you must think about
application error reporting and application recovery.
In addition to the new organization and greater depth, I added a ton of new content. Here is a partial list of enhancements
made for this edition:
New Windows Vista and Windows Server 2008 features Of course, the book would not be a true revision
unless it covered new features offered in Windows XP, Windows Vista, Windows Server 2008, and the C/C++
run-time library. This edition has new information on the secure string functions, the kernel object changes (such
as namespaces and boundary descriptors), thread and process attribute lists, thread and I/O priority scheduling,
synchronous I/O cancellation, vectored exception handling, and more.
64-bit Windows support The text addresses 64-bit Windows-specific issues; all sample applications have been
built and tested on 64-bit Windows.
Use of C++ The sample applications use C++ and require fewer lines of code, and their logic is easier to follow
and understand.
Reusable code Whenever possible, I created the source code to be generic and reusable. This should allow you
to take individual functions or entire C++ classes and drop them into your own applications with little or no
modification. The use of C++ made reusability much easier.
The ProcessInfo utility This particular sample application from the earlier editions has been enhanced to show
the process owner, command line, and UAC-related details.
The LockCop utility This sample application is new. It shows which processes are running on the system. Once
you select a process, this utility lists the threads of the process and, for each, on which kind of synchronization
mechanism it is blocked—with deadlocks explicitly pointed out.
API hooking I present updated C++ classes that make it trivial to hook APIs in one or all modules of a process.
My code even traps run-time calls to LoadLibrary and GetProcAddress so that your API hooks are enforced.
Structured exception handling improvements I have rewritten and reorganized much of the structured
exception handling material. I have more information on unhandled exceptions, and I've added coverage on
customizing Windows Error Reporting to fulfill your needs.