Title: Windows via C/C++ 5th Edition
Authors: Jeffrey Richter & Christophe Nasarre
“Get the preeminent guide to programming application for Windows with C++. Programming Applications for Microsoft Windows is a classic book (formerly titled Advanced Windows, Third Edition) and is now fully updated for Windows Vista, including the latest information about Windows XP. In-depth and comprehensive, this essential reference covers the Windows operating system and how to program at the API level. Recognized experts provide an inside view of how Windows works and how to use its features in Visual C++ development tasks. Topics covered include processes, thread pooling, virtual memory, DLLs, file I/O, and message crackers. For systems-level programmers, this is a must-have title. Includes code samples in Visual C++.”
Although the title of the book is slightly misleading, this book certainly accomplishes what the overview says. The authors provide a great wealth of information concerning Windows development topics like Threading, Process Management, working with memory, DLLs and many other areas.
Weighing in at 800+ pages, this is a extensive guide to working with Windows. The book presents the information at a rapid pace and ultimately works better as a reference book than something you sit down and read. For example I was working on a wrapper for the Windows API INI functions for a game, and whilst I have worked with strings before, I have not worked much with the Unicode strings that Windows uses. This book really helped me to understand the many different available functions, and realise that even if you use the ASCII versions, Windows will convert behind-the-scenes. (Which could have a detrimental effect on performance)
Whether it be working with strings, or working with DLLs, this book will provide a nice overview of the many different functions available to you in the Windows API, as well as short instructions on how to best make use of them.
The book is split into Strings, Processes/Threads, Memory Management, DLLs and exceptions, and each part has many sub-parts each containing a wealth of information on the topic. Each chapter is laid out with a summary of how you would accomplish the tasks in each area (Thread creation etc), and for each function and structure you may use (or group of functions/structures), there is a small summary of the best way to make use of the capabilities of the function, as well as tables describing each part of the structure or the parameters for the function.
The book not only covers the correct ways to accomplish a task, but also provides information on legacy equivalents in case you encounter them or have to use them. (Although it does strongly advise you use the newer forms)
For those doing Engineering at UTS, this book covers the Windows API equivalents of what you would learn in Real Time Operating systems, and includes all the information about inter-process communication and inter-thread communication. I am unsure what IT students do as an equivalent (if there is one).
You can find the table of contents in the book’s MSDN article here and there is also excerpts from two chapters so you can get a nice example of the structure and writing style, that way you can try before you buy.
This book is aimed at intermediate or advanced developers who already have an understanding of C++ and want to work in a Windows environment. Most of this book applies to both CLI and Win32 development, and could even be used in Game development, as long as it uses the Windows APIs. The book is also up to date with the changes for Vista.
I would say this is a must get for any C++ Windows developer’s reference library. It has many applications and the theory of how things work in Windows on a lower level can be taken into many other languages.
If you are still beginning C++ development, you should probably steer clear from this book for now, and pick it up later when you have a better grasp of the language. This book provides very short and concise code samples that generally only cover the correct way to use a feature instead of a complete sample application. It assumes that you have experience with working with C++ and all of the language specific features, and is best used to extend your knowledge into Windows specific areas.
I am currently running a competition at www.utsmsp.com where I have cross posted this review. If you are a Student or Developer in Sydney or Melbourne, you might be able to win the 2nd copy I have, more details at the end of the review there. (http://www.utsmsp.com/2009/04/review-windows-via-cpp/) If you are not in Sydney or Melbourne, you can still win this, but will have to cover the postage from Sydney.