waveInOpen() gibt 2 zurück



  • Hi!

    waveInOpen() gibt aus irgend einem Grund einen Wert zurück, den die Funktion laut Definition gar nicht zurück geben dürfte. Die Funktion gibt den Wert 2 zurück, obwhol die einzigen Rückgabewerte laut msdn folgende sein dürften:

    MMSYSERR_NOERROR Success.
    MMSYSERR_ALLOCATED Specified resource is already allocated.
    MMSYSERR_BADDEVICEID Specified device identifier is out of range.
    MMSYSERR_NODRIVER No device driver is present.
    MMSYSERR_NOMEM Unable to allocate or lock memory.
    WAVERR_BADFORMAT Attempted to open with an unsupported waveform-audio format.

    Hat jemand eine Idee wie ich nun herausfinde was 2 bedeutet bzw. was ich falsch mache?

    PS: Das Programm läuft übrigens unter Vista 32 bit, vielleicht hängt es damit zusammen...

    Danke für eure Hilfe!



  • Schau mal im Headder der du eingebunden hast da steht:

    #define MMSYSERR_BASE          0
    ...
    ...
    #define MMSYSERR_NOERROR      0                    /* no error */
    #define MMSYSERR_ERROR        (MMSYSERR_BASE + 1)  /* unspecified error */
    #define MMSYSERR_BADDEVICEID  (MMSYSERR_BASE + 2)  /* device ID out of range */ //<-Der Fehler ist also MMSYSERR_BADDEVICEID
    #define MMSYSERR_NOTENABLED   (MMSYSERR_BASE + 3)  /* driver failed enable */
    #define MMSYSERR_ALLOCATED    (MMSYSERR_BASE + 4)  /* device already allocated */
    #define MMSYSERR_INVALHANDLE  (MMSYSERR_BASE + 5)  /* device handle is invalid */
    #define MMSYSERR_NODRIVER     (MMSYSERR_BASE + 6)  /* no device driver present */
    #define MMSYSERR_NOMEM        (MMSYSERR_BASE + 7)  /* memory allocation error */
    #define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)  /* function isn't supported */
    

    MfG Tim



  • Hallo,

    die Funktion darf auch 2 zurückgeben, denn:

    // in mmsystem.h steht:
    #define MMSYSERR_BASE          0
    ...
    #define MMSYSERR_BADDEVICEID  (MMSYSERR_BASE + 2)  /* device ID out of range */
    

    MfG,

    Probe-Nutzer



  • Ok, was bedeutet nun der Fehler bzw. wie kann ich ihn beheben?



  • Habe vergessen den Funktionsaufruf zu posten:

    MMRESULT rv = waveInOpen(&voice_recHandle, WAVE_MAPPER, &waveform,(DWORD_PTR)voice_recCallback,0,CALLBACK_FUNCTION);
    

    Wie kann die device ID nicht im gültigen Bereich sein, wenn ich doch die vordefinierte Konstante WAVE_MAPPER verwende???



  • Es Funktioniert übrigens auf meinem XP Laptop. Auf meinem Vista 32bit PC wird MMSYSERR_BADDEVICEID zurückgegeben. Warum???


Anmelden zum Antworten