DWORD WriteWaveBuffer( DWORD_PTR private_handle, PWAVEHDR wave_header, DWORD wave_header_size) { SessionInfo* session_info = (SessionInfo*) private_handle; ASSERT(session_info); /* Let the processing thread know that it has work to do */ return CallSessionThread(session_info, WODM_WRITE, wave_header); }
DWORD CloseDevice( DWORD_PTR private_handle) { MMRESULT result; SessionInfo* session_info = (SessionInfo*) private_handle; /* TODO: Maybe this is best off inside the playback thread? */ ASSERT(session_info); result = CallSessionThread(session_info, WODM_CLOSE, 0); if ( result == MMSYSERR_NOERROR ) { /* TODO: Wait for it to be safe to terminate */ CloseKernelDevice(session_info->kernel_device_handle); DestroySession(session_info); } return result; }