cmq ho provato ad eseguire questo codice:

codice:
#include <windows.h>
#pragma comment (lib, "winmm.lib")
#include <mmsystem.h>
#include <iostream>
#include <stdlib.h> // Define "system" function
#define system_buf_len 4096

void CALLBACK waveInProc(HWAVEIN hwi,UINT uMsg,DWORD dwInstance,DWORD dwParam1,DWORD dwParam2);

int main()
{
	// Definisco la struttura WAVEFORMATEX
	WAVEFORMATEX waveFormat;
	waveFormat.wFormatTag      = WAVE_FORMAT_PCM;
	waveFormat.wBitsPerSample  = 16;
	waveFormat.nChannels       = 1;
	waveFormat.nSamplesPerSec  = 44100;
	waveFormat.nBlockAlign     = waveFormat.nChannels * waveFormat.wBitsPerSample / 8;
	waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign;
	waveFormat.cbSize          = 0;

	MMRESULT mmres;   // ...
	HWAVEIN phvi;     // Handle for the input device
	UINT uDevice = 0; // Device id "Gruppo Microfoni"

	// waveInOpen
	mmres = waveInOpen(&phvi,
					uDevice,
					(LPWAVEFORMATEX)&waveFormat,
					(DWORD)waveInProc,
					0,
					CALLBACK_FUNCTION
					);

	// Prepare Buffer

	char *buf = (char *)malloc(system_buf_len);

	WAVEHDR buffer;
	buffer.lpData          = buf;
	buffer.dwBufferLength  = system_buf_len;
	buffer.dwBytesRecorded = 0;
	buffer.dwUser          = 0;
	buffer.dwFlags         = 0;
	buffer.dwLoops         = 0;

	// waveInPrepareHeader
	waveInPrepareHeader(phvi, &buffer, sizeof(WAVEHDR));

	// waveInAddBuffer
	waveInAddBuffer(phvi, &buffer, sizeof(WAVEHDR));

	//waveInStart;
	waveInStart(phvi);
	
	//
	system("pause");
	return 0;
}

void CALLBACK waveInProc(HWAVEIN hwi,UINT uMsg,DWORD dwInstance,DWORD dwParam1,DWORD dwParam2)
{
	MessageBox(NULL, LPCTSTR(uMsg), "Caption", MB_OK);
}
ed ottengo un errore /unhandle exception/ il seguente:

waveinxxx.exe!waveInProc(HWAVEIN__ * hwi=0x004448c8, unsigned int uMsg=958, unsigned long dwInstance=0, unsigned long dwParam1=0, unsigned long dwParam2=0) Line 63 + 0x15 bytes C++