Overall, recommended, apart from (sigh) the code samples.
This is the sort of thing that O'Reilly still do well. A technical subject covered in depth, by someone qualified by experience who can communicate with his or her peers. The author aims to explain the Windows SNMP Service for a programming audience to enable them to write SNMP Agent and Manager software for Windows NT and 95.
The book starts by covering SNMP in general, explaining what it is for, what it can and cannot do and how it actually works. Detail is given of the protocol stack and the contents of the various PDU formats. There is some discussion of the various SNMP versions though only SNMPv1 is covered in any detail, which given the principal aims of the book is justified since the Microsoft Windows NT and 95 SNMP Services only support that version at present. This section of the book is very thorough and easy to understand and I would recommend it to anyone who wants an introduction to SNMP at a technical level. (I did howeverfind one minor error; it is implied that an object-identifier passed in a get-next PDU has to refer to some actual object in the target MIB, which would be a nasty constraint, if it were true).
Having covered SNMP in a general way, the author then gets down to the specifics of the Microsoft implementation. He explains the practicalities of installing and using the service and how to extend the standard agent. He points out how the implementation is broken according to the standard in that set-requests cannot be guaranteed to be atomic, though in most real applications this won't actually matter. The next version of the SNMP Service in NT 5 is expected to fix this in any case. The Windows SNMP API is quite small, so he is able to describe it in detail, which is helpful since some issues are not straightforward, particularly memory management; though this is much better now than in NT 3.51.
Finally there is an appendix which covers resources such as the MS Knowledge Base, RFCs and so on. Now some negative points: the first is about the quality of C code supplied in the examples and the CDROM that accompanies the book. I haven't had time to test it, but from reading the source I would guess that it works but stylistically it is very poor. It didn't take me long to find a
switchstatement with embedded
gotos. Sadly this doesn't surprise me at all, as there are very few good programmers working in this field (and some notoriously bad ones), but it would be nice for a change to see some exemplary code. My other criticism is of his gratuitous sideswipe at OO when giving advice about approaches to agent design, with the implication that OO solutions are necessarily inefficient. The CD also includes some sample tools from various sources. This is a bit of a ragbag, quality-wise, but worth exploring and will save a lot of download time.
Overall, recommended, apart from (sigh) the code samples.