示例#1
0
 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;
    }
 }
示例#2
0
 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); }
    }
 }