Rating:  Summary: Black Belt Windows Programming Book Review: Advanced Windows is bettered by the fourth edition . This book is the most detailed under the hood treatment of Windows system programming and the best book of multithreading on the shelves today. If you want to really be a master guru Windows developer and not have the high level superficial just need to know now to get by skill, this book is the source for under the hood knowledge. No sissies, not for MFC wannabees, or MFC GUIs developers, not for wimps but for hard core Windows developers. The only knock on this book is a lack of coverage on RPC, Sockets, and Services. If you need coverage of these topics couple this Richter title with Marshall Brains classic Win32 System services. With these two books there is no other windows books you need. Then perhaps you can go to the MFC books, say MFC interals.
Rating:  Summary: Timely successor to "Advanced Windows" Review: 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!
Rating:  Summary: Timely successor to "Advanced Windows" Review: 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!
Rating:  Summary: A Powerful Book for Windows Programmer Review: Hi. This is one of the most, if not the most, powerful Windows programming book I know for developing Windows program using C++. Jeffrey Richter does not bother with all the GUI tools. He shows the readers some of the key techniques Microsoft has done to Windows at the kernel and how Windows communicate at the kernel level via a messaging system. From multithreading and synchronization to multiple processes; from DLL and DLL hooking to file-mapping, Windows programmers learn Windows programming concepts and tools that will ultimately improve speed, efficiency, and stability in their Windows applications. This is a *must have* book for C/C++ Windows programmers. Kuphryn
Rating:  Summary: Good topics but C++ Should Not Be Used Review: I am a kernel debugger. Richter's last volume was written in C. This makes sense because most of what he covers is OS/kernel based where C is still used today 99% of the time. This book uses C++ and objects. Most device drivers or OS system apps would not be written in C++. I know very little C++ because I spend 100% of my time reading C code. Why Richter introduces C++ objects and classes is beyond me. I prefer the prior volume. If people start writing low level system code in C++ Windows will be even more buggy. I own about 20 UNIX internals books similar to this one and everyone use C.
Rating:  Summary: Simply what the professional developer needs to know Review: 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.
Rating:  Summary: Good as always, but high cost if you have previous edition Review: I have all editions of this book. First, to those who didn't see this one, it's significatly reworked and differs from the previous. To those who do NOT have an earlier edition: this is definitely a book to have. In fact, try to find the previous edition too. To those who do have an earlier edition: the book's good, but it is still an upgrade, and I feel the cost is too high to justify. Most of this book you're already familiar with, and moreover, if you're eyeing this book I wanna guess you probably have access to MSDN, and... you catch my drift, I hope. It be great if they offered this book for $20 to owners of the previous edition.
Rating:  Summary: Important Mistakes and Omissions Review: I looked at this book for assistance in solving two important problems that occurred in my work; in one case, the book was definitely incorrect and misleading, and, in another, it failed to provide the required information, despite consuming considerable space on related, but less important, information. First, and most seriously, the treatment of thread synchronization, especially events, has problems and limitations, even though the introduction (Page XXIX) promises "greatly improved threading synchronization material." I looked at the book to see if it corrected a deadlock in an example on Page 334 (waiting for multiple semaphore counts) of the second edition (Advanced Windows, 1995). The deadlock example was removed, without explanation. The problem can be solved by using the PulseEvent() function properly, but here is what the new edition says on Page 293: "PulseEvent... (is) just like calling SetEvent immediately followed by ResetEvent." This is incorrect and fails to consider the race condition. "PulseEvent is not very useful ... because you have no idea of what thread, if any, will see the pulse and become schedulable..." This missed the point of threads and synchronization. My problem was a priority queue, and I found another book that showed how to do it using PulseEvent. The multiple wait semaphore, incorrectly solved in Edition 2, is just a special case. This is important and is what synchronization is all about. Following this book's advice could lead to nasty deadlocks, race conditions, and other bugs. There are other misstatements and poorly motivated examples in the adjacent pages. The page 296 example uses events essentially as a binary semaphore or mutex but does not tell you so, even though the book has already discussed the critical section concept. There was also an important omission in the CreateProcess and inheritable handle discussion around Page 90. I needed to redirect standard I/O to the child process, which runs a "black box" program that I can't modify. The book discusses every technique for using inheritable handles other than what turned out to be the most useful one (using the handle members in the StartupInfo structure); I finally figured it out, but it wasn't easy, and it sure would have been nice if this very long book had given a paragraph to the solution. Without a doubt, there must be some good material here, given the other ratings. Nonetheless, from the perspective of my needs, it failed to help and was misleading.
Rating:  Summary: great book Review: 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.
Rating:  Summary: Rather dry, but what would you expect? Overall, a must have Review: It might help to read Petzold's book before this, but it goes somewhat into basic Windows stuff before getting down and dirty into the heart of operating systems. It has nearly everything possible to make some AWESOME, AWESOME Windows programs. For instance, harnessing the awesome power of threads, memory management, advanced DLL techniques, and truly making the Windows 98/2000 kernel your slave. I also feel this should be passed out to developers, as it shows what will fly in W98, but will die in W2000. Ontop of all this, Programming applications for Microsoft Windows is extremely well-written.
|