Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See this image

Programming Applications for Windows (Microsoft Programming Series) Hardcover – 1 Oct 1999

4.5 out of 5 stars 2 customer reviews

See all formats and editions Hide other formats and editions
Amazon Price
New from Used from
"Please retry"
£49.96 £2.54
"Please retry"

There is a newer edition of this item:

click to open popover

Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.

  • Apple
  • Android
  • Windows Phone

To get the free app, enter your mobile phone number.

Product details

Product Description

Amazon Review

Aimed at the experienced C/C++ developer, the new edition of Jeffrey Richter's Programming Applications for Microsoft Windows supplies expanded coverage of essential advanced Windows programming techniques and APIs. In addition, the book includes excellent material on Windows 2000 (including future 64-bit versions of the OS) and use of some C++ for sample code.

This book's strength has to be its coverage of essential under-the-hood operating system features, like processes and threads, synchronisation objects and memory management techniques--plus the APIs used to work with them. In each section, the book zeros in on how Windows 2000 and Windows 98 manage these system objects. (Windows NT 4.0 isn't mentioned here, however.) Short, effective examples, several of which incorporate the author's re-usable custom C++ classes, demonstrate each operating system feature in action. Several useful utilities highlight details of how Windows works, with programs that let you view threads, memory objects and other kernel objects.

With its coverage of Unicode and 64-bit Windows 2000, this is a book that will take your codebase into the future. Besides describing important APIs, the book provides programming tricks and tips for many useful advanced coding tasks (such as local thread storage, sparsely mapped memory files, using DLLs and Windows hooks).

Clearly written and filled with technical detail on Windows 2000, this book is a great resource for any C/C++ programmer who wants to know what is really going on inside the latest Microsoft OS. In all, this title will be an essential "upgrade" for any reader of an earlier edition and will no doubt deserve serious consideration from any C/C++ programmer who wants to get the most out of their Windows code. --Richard Dragan, Amazon.com

Topics covered: Windows 2000 and Windows 98 advanced system programming techniques, 32-bit and 64-bit Windows 2000, Windows error messages, Unicode strings, kernel objects and security, processes, jobs, managing threads, scheduling, priorities, thread synchronisation with critical sections, events, mutexes, and custom C++ classes, fibers, Windows memory architecture, managing virtual memory, thread stacks, memory-mapped files, default and custom heaps, DLL basics, thread- local storage, DLL injection and API hooking, Windows structured exception handling (SEH) basics, C++ vs. Windows exceptions, exception handlers.

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

4.5 out of 5 stars
5 star
4 star
3 star
2 star
1 star
See both customer reviews
Share your thoughts with other customers

Top Customer Reviews

Format: Hardcover
Most books about Windows applications programming talk about graphical things (or maybe abstractions like MFC) but tend to spend very little time, if any, on other aspects of the operating system. This book, on the other hand, barely touches GUI things but concentrates solely on all those other things you might want to do in user space.
A large amount all of this material appears in the Microsoft online documentation, but Richter's book provides the overview and context for the detailed documentation - showing you how and why to use the different variants of, say, memory management, and how those variants relate to each other. Hidden within this eminently readable book are a lot of useful hints and tricks to improve just about anyone's programming skills.
There are a few typos (in the text and the code samples), though they're mainly trivial, but check the MS Press support site!
Although the author claims to be writing C++, it's really just slightly C++ified C, not that this detracts much from the book.
Comment 9 people found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse
Format: Hardcover
We've all read lots of Windows books over the years. All the usual "put a dialog box on the screen", "this is what the windows message queue is all about" sort of stuff. Now that most Windows GUI development seems to be done in managed code (typically C# or VB on .Net) the stuff that we still get to do in un-managed C++ is what this book is about - high-performance threading, memory-mapped files, exception/termination handlers etc. I have been writing high-performance, high-reliability data feed handlers on UNIX and Windows for years having learnt techniques the hard way. What I hadn't realised was that this book, sitting on my shelf for quite some years now, covers the subject matter that I sweated over. Having just been referred to this book by another one that I was reading I finally took it off the shelf last week. It's certainly not a book for a beginner, but for developers working server-side it's actually very good. I'd be tempted to read it in conjunction with something like Intel's "Programming with Hyper-Threading Technology", but even on it's own it is very useful. So who is this book good for? Well, if you've been doing threading, memory-mapped files etc on UNIX and have been asked to do similar on Windows then it's definitely for you. Windows actually has a much richer threading API than Pthreads, and this book in conjunction with the Intel one mentioned above will give you a pretty good understanding of how to make best use of it. I wish I'd read this eight years ago! The good news is that the author is bringing out "Windows Via C/C ++ (PRO-Developer)" very soon, which looks like it will effectively be an update on the same book taking into account new Windows releases such as Vista.
Comment One person found this helpful. Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again
Report abuse

Most Helpful Customer Reviews on Amazon.com (beta)

Amazon.com: 4.6 out of 5 stars 20 reviews
5.0 out of 5 stars Simply what the professional developer needs to know 18 July 2000
By Frank Paris - Published on Amazon.com
Format: Hardcover Verified Purchase
I don't know what other reviewers are talking about claiming this is for "advanced" Microsoft developers only. This book describes bread and butter Microsoft development for C and C++ professional developers. Any serious program has to use all kinds of the facilities described in this book just to get anything done that is interesting and worthwhile. The value of this book is that the things you need to know to do this development are presented clearly and systematically. This has been the virtue of all past iterations of this book, and each subsequent edition has been an improvement on the past. The alternative to this book is digging through the SDK, which you can do with the on-line help. THAT I would call boring. But I can't imagine that a truly professional Microsoft C or C++ developer would find this book boring, as one of the reviewers has. I appreciate the fact that it is not full of cute little asides or sarcastic observations. It is a professional presentation addressed to professional developers who needs to know this stuff just to do their jobs or to get through an interview for a new job.
1 of 2 people found the following review helpful
5.0 out of 5 stars Classic Windows 19 April 2003
By Elijah D - Published on Amazon.com
Format: Hardcover Verified Purchase
When you want to know how windows works, there are 3 people (outside of Microsoft) to go to: Jeffery Richer, Matt Pietrek and John Robbins. This book deserves a spot on every serious developer's shelf. It covers a lot of under the hood topics that are difficult to find elsewhere.
Even though .NET is starting to gain ground, a lot of the low level details of the OS have not changed and a good knowlegde of win32 can never be a bad investment.
10 of 11 people found the following review helpful
5.0 out of 5 stars great book 26 Jan. 2000
By A Customer - Published on Amazon.com
Format: Hardcover Verified Purchase
I would recommend this book to anyone with a good working knowledge of C/C++ and a desire to learn the real mechanics of windows programming. Not very practical unless you also know the GUI end of it, but nonetheless this book can't be beat.
38 of 38 people found the following review helpful
4.0 out of 5 stars Great Book, Some Style Hurdles 20 July 2001
By Vincent J. DiPippo - Published on Amazon.com
Format: Hardcover
This book would have been better titled "Advanced Windows Programming Topics" because with the exception of the chapter on Unicode and the three chapters on Structured Exception Handling, it covers topics that come into play in the advanced stages of specific types of application development. It is not nearly as generally applicable as the title suggests. For instance, it handles virtual memory and memory-mapped files, but not basic memory management. It handles advanced Windows messaging topics, but not any UI programming. It does not cover I/O or many universally required items such as strings, time, etc. in either their C standard library, C++/MFC class library, or ATL template library forms. It also does not cover higher-level info like COM, networking, etc. which are where many new technologies live (ADO, ADSI, SOAP, XML, Internet, etc.)
It is very Win32-specific and heavily slanted toward Visual C++. I think it is a great fit with Inside Windows 2000, because many of the advanced topics covered from the programming perspective here are also covered from the internal system operation perspective there.
These are not so much problems as they are a level-set for your expectations. There are plenty of other great books on the topics not included here.
There were three distractions that plagued this book. First, there is far too much source code printed in the book. There is a CD and there are code snippets in the text (in addition to the complete source code later in the chapter). This was far too redundant and caused quite a bit of page flipping. Although it is quite interesting and beneficial to examine source code, its placement in this book just interrupts the flow of reading. Second, there is quite a bit of useless discussion on what doesn't work, including rambling sections on the many failed attempts the author had before achieving success on a topic. This was also a distraction. It would have been better presented as the correct way of doing things with admonitions on what not to do and possibly why. The blow-by-blow description of the process used to discover these things was too frequent and became annoying. Third, there were similar sections that were less about the author's own exploits but just as overdone. Most of these focused on examining what could happen if you didn't code correctly. They would start with a basic statement of what could go wrong, but then went on to beat the concept into the ground by devoting paragraphs to aspects of the ramifications that are completely obvious to anyone in this book's target audience. There is some value to this last type of analysis, as it can help the thought process required for hard-target debugging, but these should have been in a debugging chapter rather than drawn out and placed with the rest of the text.
In spite of these hurdles in style, the book covers topics that are absolutely essential for robust application development. It covers Unicode, Processes, Threads, Synchronization, Memory Management, DLLs, Exceptions, and certain advanced Windows UI topics. For every topic covered, the coverage was authoritative. The author has a great understanding of the topics covered and manages to cover nearly the entirety of a topic without it seeming like a reference guide. In that, it is extraordinarily well done. I have since adopted several important best practices in synchronization, thread management, DLLs, and so forth. Every topic was rife with great information.
For the topics covered, this is one of the best books I've read. This is an extremely valuable book and a definite must read, but not until after you are quite well versed in "Programming Applications for Windows" ironically.
As a final note, if you're thinking of reading this book, you will thoroughly enjoy reading the author's Programming Server-Side Applications for Windows as well. It has the same source code redundancy issue, but is much leaner in the other aspects of style. It covers many excellent server-side topics like services and performance-enabling your applications. In addition, it offers the best coverage of scalable asynchronous I/O and the best coverage of Win2K security that I've ever read.
16 of 16 people found the following review helpful
4.0 out of 5 stars Timely successor to "Advanced Windows" 11 April 2000
By Moishe Halibard - Published on Amazon.com
Format: Hardcover
Edition 3 of this book, under the title "Advanced Windows" was such a classic that it rapidly vanished from bookshops. For love or money, no copy could be bought anywhere, and want of any alternative, serious programmers had to beg, borrow or steal a copy to do any real Windows programming.
Rather than reprint, it seems that Microsoft press preferred a new edition, and indeed, it is substantially different from the previous one. It even has a new name, albeit so bland one has no idea what is inside the book. The material has been completely rearranged, and the code samples rewritten, often using C++.
So what is new?
Well, there is the now-obligatory chapter on Unicode, quite unnecessary since it gets more than exhaustive coverage in Petzold's heavily overweight "Programming Windows", fifth edition, where it belongs.
There are chapters on new Windows features, such as Jobs, whereby several processes can be grouped together and have common properties, Fibers, good for fast porting UNIX multithreaded applications to Windows, and Thread Pooling, whereby a pool of threads can be reused without creating and destroying the threads each time.
There are also expanded sections on kernel objects, threads, processes, scheduling, synchronization (possibly a bit overdone), memory architecture and management, memory mapped files, exception handling, basic and advanced dll topics. In all these cases the coverage is extensive and excellent, with full analysis and explanation of what really happens under the hood of the operating system.
Those who regularly read the columns of Pietrek and Richter in Microsoft Systems Journal will recognize some of that material gathered together here. Where necessary, there is also excellent psudo-code showing how the operating system works.
Well, who needs this stuff?
Not a programmer making a simple application with a vanilla GUI. For that, Petzold's "Programming Windows" and Prosise's MFC provide more than enough excellent material. This book is meant for those who need to write power applications, which harness the full potential of the operating system, and even overcome some of its serious bugs and shortcomings. Its hard to understand why Windows is doing things wrong, and write workarounds, unless you have a good idea of what it is meant to be doing. Richter explains very clearly how it is supposed to do its work, and often how to make it cleverer. The first time I saw "Advanced Windows" I wondered who ever needed this stuff, now his books are permanent residents on my desk.
So why do I give it 4 stars, unlike all other reviewers who give it a 5?
Richter writes this book for Windows 2000 and 98, with not a word about NT and 95. Now, 98 is just 95 warmed over, and 2000 is NT 4 tweaked a bit, so most of what he writes is directly applicable. However, there are more advanced functions, and topics, which do not exist on Windows 95, or worse, exist but behave differently (such as the Interlocked function group), and some modules, such as Toolhelp, which exist on 9x and Win2000, but not NT. Microsoft is welcome to introduce new functions, but it is hard to use them if one is writing an application for home users, many of whom will be using 95 for several more years. And unless Microsoft offers us all free upgrades from 95 to 98, and from NT to 2000, we will not be able to safely use these functions for several years yet. I expect any Microsoft reference book such as this one to at least point out these quirks. Instead, there is not a word of warning as to which of the functions it so happily recommends do not exist under the old versions of Windows, and therefore cannot be used by most of its readers. Sorry Richter, no full marks from me, but fix this problem, and I'll give you a 5!
Were these reviews helpful? Let us know