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: a49a55e49d8a1396030d84e152ee4c3f

    Read our privacy statement:
    http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0409

    nun 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 Probleme

    Danke



  • 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.


Anmelden zum Antworten