Was die Messages mit dem Pointer angeht: So wird's nicht gehen. Die
DLL wird ja im Prozess von WinAmp gestartet, und hat somit den virtuellen Speicher mit WinAmp - nicht mit deinem Programm. Das heisst wenn du da jetzt einfach so einen Pointer rüber wirfst, zeigt der in deiner Prozessumgebung auf zufälligen Krams und wird höchstwahrscheinlich eine
AV begünstigen.
Wenn nur via Messages, dann wie schon erwähnt mit WM_COPYDATA. Wobei ich ein MMF noch immer bevorzugen würde.
@FFT: Ich hab mal vor einiger Zeit mit einem mittlerweile veralteten Header gearbeitet. Dort war es dann so, dass man nich mit Funktionsaufrufen an WinAmp herangetreten ist, sondern man hat Pointer auf diverse Puffer übergeben - z.B. ein Array in das die FFT Daten sollen. Es gab da eine Hand voll Prozeduren die so eine
DLL zu exportieren hatte, u.a. eine Init() die diese Dinge zu erledigen hat. Dann gibt's da noch eine "Render" Prozedur die von WinAmp dann aufgerufen wird, wenn es denkt dass sich dein Plugin mal neu zeichenen könnte. Das ist dann der Zeitpunkt zu dem du weisst dass deine Datenpuffer aktuell sind.
Ich vermute mal, dass sich an der grundlegenden Art und Weise nicht so arg viel getan hat.
PS:
http://dev.winamp.com/plugin-developers. Da gibt's auch nen
SDK. War jetzt nicht SO schwer zu finden
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)