True. But I'm relying on MS not screwing themselves. Any ABI change in this function would break endless amounts of code.
The packing thing is the only problem. You can fix that by adding packing pragmas.
// Before the struct:
#pragma pack(push, 1)
// After the struct:
However, I still think this is a poor solution - the correct thing to do would be to fix up whatever needs to be fixed to make Windows.h possible to include (at least into a separate source file).
What happens when the original poster needs another Windows function, where do you draw the limit for having your own declarations of the Windows API? 3, 5, 10 or 100 functions?
Of course it's a poor solution. It's a poor situation - forced to use an unmodifiable header that has a useless typedef that conflicts with windows.h.