BOOL CWaveManager::PlayBlock(PBYTE pData, DWORD dwLength)
{
WAVEHDR WaveHdr;
memset(&WaveHdr, 0, sizeof(WaveHdr));
WaveHdr.lpData = (LPSTR)pData;
WaveHdr.dwBufferLength = dwLength;
if(::waveOutPrepareHeader(m_hWaveOut, &WaveHdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR)
{
return FALSE;
}
if(::waveOutWrite(m_hWaveOut, &WaveHdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR)
{
return FALSE;
}
return TRUE;
} 자꾸 Access violation이 발생하는 것이었다.
왜일까?
그것도 신기한게 TRACE("")로 debug 문자를 찍으면 정상 작동 한다는거다.
얘가 왜이럴까 약 2시간 정도 씨름을 하다가..
였다-_-..
얘가 비동기라는걸 처음에 모르고 짠 상태여서 뭐가 문제인지 한참 헤멨다.
이런.. 정 필요하면 스레드는 내가 만들테니 비동기 방식의 API좀 짜달라고..!!
Posted by 장현준


