Is there something wrong with this? I suspect maybe the header file?
Fwiw the Windows SDK ships the v0 version, but then the gameinput DLL also has a separate standalone SDK with the v1 version of the header. Both versions are incompatible and declare overlapping but different types and interfaces.
The DLL itself has to implement both versions at the same time, as some older applications have been built using v0 interfaces while newer use the v1 interfaces. It doesn't seem tractable to duplicate the header every time a new version gets introduced with backward incompatible changes, as many things still are shared between versions.