If you are going to write a device driver for Windows 95, this book is highly recommended, despite the slightly high price. I only wish there had been something as good when I was writing a VxD for Windows 3.1!
The sub-title of this book provides a better idea of its content; C/C++ programmer's guide to VxDs, IO devices and operating system extensions . Certainly, the emphasis is on using C and C++ to solve the low-level programming problems, although the code examples are not completely free from
_asm{}blocks.
In many ways, this is a fascinating book. Although published by Microsoft Press, it isn't 'straight from the horse's mouth'. The author is at pains to stress that although he would have dearly liked to peruse the source code for Windows 95, he couldn't even get close! Consequently he warns that since the information is based on his experience and that of the developers in the CompuServe WINSDK forum, the occasional mistake will have slipped through.
It is quite clear from the detailed explanations that this book truly encapsulates a wealth of experience. Most sections have liberal helpings of diagrams, which are a great aid to the understanding of a frequently convoluted and confusing subject. Although the book covers much code, only vital snippets are presented in the text - a definite plus. The rest is confined to the accompanying CD. (A CD is overkill - 2.3M of files, of which 130k is C source, 198k is C++ and 54k are assembler.) Overall, the coding is a little inconsistent; Hungarian notation is only used most of the time. If you have to decorate variable names, do it consistently, or you defeat the object. The coding style may not be to everyone's liking either.
These are minor complaints. If you are going to write a device driver for Windows 95, this book is highly recommended, despite the slightly high price. I only wish there had been something as good when I was writing a VxD for Windows 3.1!
(A little puzzle from the section on Plug and Play which someone may care to comment on: Plug and Play cards are switched into configuration mode by being sent a particular 32-byte sequence. We are told that this sequence is composed of 'successive values of a binary polynomial whose likelihood of random occurrence is vanishingly small'. Is this 'tongue-in-cheek', or does it mean something?)