The one thing that stands out for me is that the value it's spitting out isn't a handle.
Looking through the code, you specified a ThisPointerType of ThisPointer_Address but didn't use a callback prototype that references it like so:
Code:
function MRESReturn (Address pThis, Handle hReturn, Handle hParams);
If you don't need the this pointer, you should instantiate using ThisPointer_Ignore instead, which will omit pushing the this to your callback. (The extension has no way to see what the callback takes as its arguments; you only get the compile-time check that it matches one of the ones specified as a DHookCallback.)
I hear you on the callback prototype. Going to fix that part. That actually did the trick. I'll post the final code after I'm done testing.