Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 150 of file common.c.
{ SessionInfo* session_info; MMRESULT result; DWORD message; /* This will automatically check for duplicate sessions */ result = CreateSession(device_type, device_id, &session_info); if ( result != MMSYSERR_NOERROR ) { DPRINT("Couldn't allocate session info\n"); return result; } result = OpenKernelDevice(device_type, device_id, GENERIC_READ, &session_info->kernel_device_handle); if ( result != MMSYSERR_NOERROR ) { DPRINT("Failed to open kernel device\n"); DestroySession(session_info); return result; } /* Set common session data */ session_info->flags = flags; /* Set wave/MIDI specific data */ if ( IsWaveDevice(device_type) ) { LPWAVEOPENDESC wave_open_desc = (LPWAVEOPENDESC) open_descriptor; session_info->callback = wave_open_desc->dwCallback; session_info->mme_wave_handle = wave_open_desc->hWave; session_info->app_user_data = wave_open_desc->dwInstance; } else { DPRINT("Only wave devices are supported at present!\n"); DestroySession(session_info); return MMSYSERR_NOTSUPPORTED; } /* Start the processing thread */ result = StartSessionThread(session_info); if ( result != MMSYSERR_NOERROR ) { DestroySession(session_info); return result; } /* Store the session info */ *((SessionInfo**)private_handle) = session_info; /* Send the right message */ message = (device_type == WaveOutDevice) ? WOM_OPEN : (device_type == WaveInDevice) ? WIM_OPEN : (device_type == MidiOutDevice) ? MOM_OPEN : (device_type == MidiInDevice) ? MIM_OPEN : 0xFFFFFFFF; NotifyClient(session_info, message, 0, 0); return MMSYSERR_NOERROR; }