6/8: Why are we adding checks that native doesn't have?
I guess we don't need to, given if it happened on native it'd just crash. I mostly felt like it was easy to add and might help someone testing things out on wine. Those checks can be removed if you'd prefer.
I have a hard time seeing how they're helpful. I'd at least make it an ERR without an early return.
7/8: Why the devnode_data structure? Why not just store it directly in wine_device?
Later patches not in this series add more data to that structure, and the data is specific to PDOs. It feels odd to have those fields in the regular `wine_device` structure, mostly because it gives the impression that the fields should be filled for all `DEVICE_OBJECT`s. If you'd prefer it not have it's own separate structure that's fine too.
Making it a separate structure seems unnecessary to me. I would just store it directly and add a comment noting that those fields are PDO specific. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11263#note_144317