Hallo,
ich kenne mich jetzt nicht direkt mit WaveIn aus, sondern nur mit WaveOut. Allgemein darfst/solltest du die Callbackfunktionen nur zum setzen von Flags verwenden, die dann entsprechend von einem anderen Thread in periodischen Abständen "kontrolliert" werden.
Bei WaveOut mache ich das zum Beispiel so:
Delphi-Quellcode:
procedure stream_callback(hwo: HWAVEOUT; uMsg: Cardinal; dwInstance, dwParam1, dwParam2: DWORD);stdcall;
begin
if (uMsg = WOM_DONE) then
begin
with TAuWaveOutStreamDriver(Pointer(dwInstance)) do
FFreeblocks := FFreeblocks + 1;
end;
end;
Das Hochzählen der Variable informiert hierbei den Ausgabethread darüber, dass neue Daten zur Ausgabe bereitgestellt werden müssen.
Entsprechend anders herum musst du das dann wohl bei WaveIn machen. Dort müssen dann die beschriebenen Pakete abgeholt werden.
Hoffe das hilft dir ein wenig,
Andreas
PS: Wenn dir das was hilft: Hier ist eine
Unit von mir, die WaveOut verwendet - das sollte entsprechend übertragbar sein:
http://audorra.svn.sourceforge.net/v...w=markup#l_408