Your comment about return RpcRaiseException(hr); is quite interesting, but, IMO, it's not a good choice.
RpcRaiseException(hr); return; is c-like whereas return RpcRaiseException(hr); is a (slightly arcane) C++-ism which, I gather, really only came about because template/generic programming sort of forces it to be legal else various templates could not be written.
The original ANSI C expressly forbids your return statement under 'constraints' of section 6.6.6.4 (ISO/IEC 9899 section numbering in this sentence).
I think the original questions demonstrate that it would be better written as simpler C as I suggest (and others hinted).
David Anderson: just making a suggestion here. (author of the (first-ever-shipped, possibly) full ANSI C compilation environment, shipped by SGI in 1990 (only usable on SGI MIPS/IRIX machines)).