Please make fnptr a void * and drop the casts from all the call sites.  This was very confusing to me. "WTF, treating proc address pointers as strings? what is going ON here?". :)

(Perhaps the voicFunc from Hardhook.h is also a good replacement? Anyway, void * will make it more understandable and remove the need for the const char * casts.)

Also I'm not certain what our agreed-upon style for */& in ptr/ref arguments is (I don't believe we specified it?), but this is at the very least inconsistent with the rest of the file.