I can kind of get this API to work if I only use it every so many game frames, and disable the WAIT requirement on GetOverlappedResult.
Even still it freezes and crashes. If I take no countermeasures the game freezes (locks up) as soon as the rumble in nonzero.
This function is being called either way, so I imagine the device ignores values that don't change the rumble state.
I realize this is a different library, and my source code for your project is dated. I had/have a version that doesn't recognize the DualSense for JslSetRumble because the DS4 enum is used to test for it, but I can see that's been fixed in your code here on Github. Anyhow, that's how old my code is.
Edited: I'm just starting out and doing things in my main render thread. I'm thinking that might be a bad design.