It's quite obvious that most of the API definitions were automatically generated to some extent, e.g, the use of MS disturbingly poor parameter names. That's very obvious because there is no attempt whatsoever to cleanup MS' definition mess, e.g, close to a dozen superfluous type names for the same data type and, type names that have no business existing in Pascal, e.g, tagSomeName.
It really makes no sense to protect mistakes and gross deficiencies. Definitions that are incorrect should be corrected. Things should be improved.
If making it correct breaks some code then that code should be corrected too.
Another case like that is WriteFile, the current definition is incorrect but, I know that's another one that is not going to change and, _all_ the definitions that use untyped parameters are semantically incorrect because there is no such thing nor equivalent in C nor C++. I'm not the only programmer who has written perfectly good code that ended up causing access violations because of those incorrect definitions (which are unfortunately here to stay.)
I know, this situation isn't going to change. Somehow some mistakes are sacred and must be preserved.
Anyway, I'll keep reporting the mistakes as a courtesy. I have to admit that I'm still not used to seeing mistakes defended and preserved.