PlaySound und Vista Problem ?
-
Hallo
Ich habe eine Programm geschrieben, in dem man unter anderem eine wave Liste erhält und per Klick auf den Namen dann den Sound hört. Die Liste und dann auch die Sounds kommen von einer verschlüsselten Datei. Soweit alles kein Problem.
Beim klicken auf den Namen wird die *.wav Datei 'entpackt' und liegt als MemoryStream vor. Zum abspielen benutze ich 'PlaySound(,,)'. Die Liste ist recht groß (bis zu 1000) aber das alles funktioniert unter Windows XP ohne Probleme. Das Problem ist, daß unter Vista es nachdem man einige Sounds abgespielt hat, das Programm abstürzt. Leider benutze ich kein Vista um evtl. näheres zu erfahren.Problem signature:
Problem Event Name: APPCRASH
Application Name: xxxxx
Application Version: xxxxxx
Application Timestamp: 00000000
Fault Module Name: msvcrt.dll
Fault Module Version: 7.0.6000.16386
Fault Module Timestamp: 4549bd61
Exception Code: c0000005
Exception Offset: 0000a5b2
OS Version: 6.0.6000.2.0.0.256.1
Locale ID: 2057
Additional Information 1: fed2
Additional Information 2: d2ba19f8d721a8887d99df4ebaeb5205
Additional Information 3: e65f
Additional Information 4: a49a55e49d8a1396030d84e152ee4c3fRead our privacy statement:
http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409nun meine Frage:
- was kapselt die msvcrt.dll ?
- Ist das Problem bekannt ?
- gibt es eine andere Möglichkeit eine *.wav Datei aus einem MemoryStream abzuspielen ? wenn möglich ohne Vista ProblemeDanke
-
OldMan00 schrieb:
Leider benutze ich kein Vista um evtl. näheres zu erfahren.
Viel anderes wird dir aber zum Debuggen kaum übrig bleiben. Im Zweifelsfall gibt es ja den Remote-Debugger. Alternativ kannst du mit der JCL im Fehlerfalle Stack-Traces erstellen lassen, oder Produkte wie EurekaLog oder madExcept benutzen.
-
Problem gelöst !
vielleicht für den ein oder anderen interessant.
Die Wave Datei im Memory(char* buffer) habe ich PlaySound übergeben und anschließend buffer wieder gelöscht (delete[] buffer). winxp hat damit kein Problem -> aber Vista. Ich vermute XP benutzt nochmal einen Zwischenspeicher, da 5 Milisekunden reichen eine Datei (egal wie groß) abzuspielen auch wenn der buffer dann nicht mehr existiert. Vista benötigt den buffer so lange der Sound spielt. So habe ich buffer global deklariert und lösche ihn erst bei erneutem Klick bzw. beim Beenden.