If the enum is for some reason not DWORD-sized, an intermediate variable would get us the wrong behavior for binary compatibility. We'd be assigning a different sized value to the caller's DWORD-sized variable. Of course, casting would break if Wine or winelib calls the function internally.
It seems to me that neither approach is really safer, but casting allows for better code sharing.