Hard to say, it is not an Automation compatible signature. An IDispatch interface requires passing strings as a BSTR, a string that's allocated on the COM heap. The contract for an [out,retval] is that the interface method allocates the string with SysAllocString() and the caller releases it with SysFreeString().
Your code as written is likely to misbehave. You must at least use SysAllocString, a copy in other words. You might get away with the OLECHAR** declaration in your IDL but it is quite unhealthy, this goes wrong when the call is early-bound and marshaled across an apartment boundary. You'd better fix it, use BSTR* instead.