Leider hab ich nicht die Zeit deinen ganzen Quelltext durchzusehen.
Als Hilfe kann ich nur
dieses Tutorial empfehlen.
Dort wird zwar nur auf das Abspielen eingegangen, aber naja...
Zum Abspielen kannst und solltest du mehr als 2 Puffer benutzen! In dem Tutorial ist von 20 die Rede!!! Damit vermeidest du Lücken...
Ich weiss jetzt nicht genau was du vor hast weil du WaveOut und WaveIn benutzt. Willst du das Aufgenommene gleich wieder abspielen, dann kannst du den WAVEHDR vom Aufnehmen auch gleich zum Abspielen benutzen!
Nachtrag:
Deine Puffergrösse muss mit der Samplerate in Einklang sein! am Besten Puffergrösse = Samplerate *8 *x