I think I know what the problem is.
Winamp returns a pointer to a string.
The pointer is just a reference to a memory location.
Each program runs in its own memory space, so in order to retrieve the string from that memory location, your program has to run in the same thread as winamp.
I think this can only be accomplished if your program runs as a plug in from winamp.