안녕하세요! 몇달동안 해결이 되지 않는 문제입니다. 아주 조금이라도 도움이 될만한 내용이면 꼭 답변 좀 부탁드려요! <div><br></div> <div>현재 특정이벤트 발생시 소리를 재생해줘야 하는 프로그램입니다.</div> <div>사용자는 다른 작업을 하다가 소리를 듣고 대응을 하는게 주목적입니다.</div> <div>그래서 100% 소리가 재생되는게 보장되어야 합니다.</div> <div><br></div> <div>그런데 문제는 불특정 PC에서 소리가 간헐적으로 재생이 되지 않는 현상이 발생합니다.</div> <div>(10번중 1~2번 안나온다거나 연속으로 몇번 안나오다가 다시 나오는 식입니다.)</div> <div><br></div> <div>대상 OS는 일단 Windows10 32bit입니다.</div> <div><br></div> <div>처음 사용한 방식</div> <div>PlaySound(NULL, NULL, 0);</div> <div>PlaySound("wav파일명", NULL, SND_ASYNC|SND_FILENAME);</div> <div><br></div> <div>위와 같이 PlaySound(sndPlaySound) 함수를 사용하여 소리를 재생했습니다. 이 방식은 꽤 자주 현상이 발생했습니다.</div> <div><br></div> <div>그래서 DirectSound로 방식을 바꿨습니다.</div> <div>협력레벨은 DSSCL_NORMAL로 1차 버퍼는 별도로 생성안하고 2차버퍼는 DSBCAPS_STATIC|DSBCAPS_GLOBALFOCUS|DSBCAPS_LOCSOFTWARE 옵션을 주고 생성했습니다.</div> <div><br></div> <div>그리고 재생시에는</div> <div>IDirectSoundBuffer8객체->Stop():</div> <div>IDirectSoundBuffer8객체->SetCurrentPosition(0);</div> <div>IDirectSoundBuffer8객체->Play(0,0,0);</div> <div><br></div> <div>위와 같이 방식을 바꿨더니 PlaySound일때보다는 소리가 안나는 확율이 줄기는 했지만 여전히 소리가 안나는 현상이 발생합니다.</div> <div>다만 이 경우 소리가 안날때 Play함수에서 DSERR_ACCESSDENIED(0x80070005) 오류가 리턴됩니다.</div> <div>msdn문서에도 Play함수 리턴코드로는 해당 오류가 난다는 내용이 없습니다...</div> <div><br></div> <div>현재 상황은 여기까지입니다.</div> <div><br></div> <div>지금은 SFML, SDL, OpenAL, XAudio2 등의 방법을 고민중입니다만..</div> <div><br></div> <div>만약에 하드웨어의 문제 또는 Windows의 문제라면 해결이 안되기때문에 삽질하는게 아닌가 하는 생각에 쉽게 </div> <div>작업을 못하고 있습니다.</div> <div><br></div> <div>관련 작업 경헙이 있으시거나 힌트가 될만한 내용이 있으시면 꼭 좀 댓글 부탁드려요!</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.