I tried running this game on Windows 10 and it crashed at startup for me. Upon looking at it in the debugger, it looks like a bug in DirectInput device enumeration code. The game goes over each DirectInput device in the system, adds it to the list and calls init function depending on the device type (mouse, keyboard, game controller). Problems arise, however, if it comes across a miscellaneous device type (DIDEVTYPE_DEVICE), this results in the local type variable remaining at -1 which results in array out-of-bounds crash further down. This bug notably gets triggered if you have USB keyboard and/or mouse in your system (something everyone has these days) since DirectInput adds each of them as a misc device. Case in point, if I unplug the mouse and disable the touchpad on my laptop, the game starts.
I thought about using dinputto8 + devreorder to hide those extra USB devices but dinputto8 doesn't seem to work with this game properly. So the alternate method is to patch the executable to only enumerate one device type (can't enumerate multiple at once) - go to 0x7F892 in hex editor and replace 00 with 03 to use the keyboard or 04 to use a gamepad.
The game seems to be working fine with dgVoodoo2 after patching exe, the headlights in night levels appear as they should.