This is a good idea in principle, but a few things bother me about it: (1) the tables are hard to read (could maybe be solved with indentation)? (2) it would probably make sense to split get/set into separate tables, and not to split tcp/udp? I dunno, looks potentially simpler. (3) It's a bit ambiguous in many cases whether an operation is supported or not. I.e. it'd be nice to have *successful* calls to most of these. At least WSAENOPROTOOPT is relatively unambiguous, but I can't tell if a given operation always returns WSAEINVAL (like, say, the hardcoded IPv4 option 41) or only returns WSAEINVAL because we're not using the right arguments. Which is to say that maybe a table isn't that great after all :-/ (4) It's also kind of unclear what /* win7 */ means: broken on win7, or before win7, or up to and including win7, or what?