$ cat src/wine/*/*/tests/*.c | wc -l
1085766
But we don't live in that world and it's far more interesting to compare like with like. When you take into account its scope, in terms of completeness and usefulness, MSDN is head and shoulders above every other API doc I can think of except maybe Java, which is also excellent. Certainly better than Apple, and don't even get me started on most open source APIs.That's not the purpose of MSDN documentation though.
Either way, its clear vendor lockin
There's the documented, public functionality that Windows implements and wants all the applications to adhere to. This should be documented and it is.
Then there's the functionality that Microsoft had to implement behind the scenes because some important application used it in an incorrect way or it worked by accident. They didn't want that application to break with a new release of Windows. Now Microsoft doesn't want new applications to use this, so they don't document it. I think that is absolutely correct.
MSDN API documentation is meant for people that write applications the way Microsoft wants the applications written.
Wine isn't an application. They want to emulate what Windows does. The API documentation is not for that purpose and it shouldn't be.
That being said, there are APIs in Windows that are secret and undocumented. Those should not be used by applications. Windows isn't open source. Accept it.
Maybe MS has tried to clean that up recently, but it has a track record of inaccuracy, at best.
I wouldn't be surprised if the Wine developers were the ones submitting the corrections to the MSDN, anyway.