private void executeTask(MM_TASK task) { mmStatus sts = mmStatus.MM_STS_NONE; switch (task._item) { case MM_TASK_ITEM.MM_STOP: _run = false; goto case MM_TASK_ITEM.MM_CLOSE; case MM_TASK_ITEM.MM_CLOSE: sts = closeSession(task._dictKey, task._lpData); _state = MM_TASK_ITEM.MM_CLOSE; break; case MM_TASK_ITEM.MM_OPEN: sts = openSesssion(task._dictKey, task._lpData); _state = MM_TASK_ITEM.MM_OPEN; break; case MM_TASK_ITEM.MM_PLAY: sts = playSesssion(task._dictKey, task._lpData); _state = MM_TASK_ITEM.MM_PLAY; break; case MM_TASK_ITEM.MM_PAUSE: sts = pauseSesssion(task._dictKey, task._lpData); _state = MM_TASK_ITEM.MM_PAUSE; break; case MM_TASK_ITEM.MM_DICT: sts = dictSession(task._dictKey, task._lpData); break; default: Debug.Assert(false); break; } }
public MM_TASK(MM_TASK_ITEM item, mmSessionDictionaryKeys dictKey, IntPtr lpData, int dataSize) { _item = item; _dictKey = dictKey; if (dataSize > 0) // not using internal parameters (_parms) { try { _lpData = Marshal.AllocHGlobal(dataSize); MMInterop.memcpy(_lpData, lpData, new UIntPtr((uint)dataSize)); } catch { Debug.Assert(false); } } }