Windows底层音频API速查手册:输入输出设备的启动、停止、重置与关闭

[复制链接]
  1. WinAPI: waveInReset - 重置输入
  2. 提示:
  3. 函数会终止输入, 位置清0; 放弃未处理的缓冲区并返回给程序;
  4. TWaveHdr 结构中的 dwBytesRecorded 将包含实际数据的长度.

  5. //声明:
  6. waveInReset(
  7.   hWaveIn: HWAVEIN {设备句柄}
  8. ): MMRESULT;       {成功返回 0; 可能的错误值见下:}

  9. MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
  10. MMSYSERR_HANDLEBUSY  = 12; {设备已被另一线程使用}


  11. WinAPI: waveInStart - 启动输入
  12. //声明:
  13. waveInStart(
  14.   hWaveIn: HWAVEIN {设备句柄}
  15. ): MMRESULT;       {成功返回 0; 可能的错误值见下:}

  16. MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
  17. MMSYSERR_HANDLEBUSY  = 12; {设备已被另一线程使用}


  18. WinAPI: waveInStop - 停止输入
  19. 提示: 如果未启动则调用无效, 但也返回 0;
  20. 缓冲区会被返回, TWaveHdr 结构中的 dwBytesRecorded 将包含返回的实际数据的长度.
  21. //声明:
  22. waveInStop(
  23.   hWaveIn: HWAVEIN {设备句柄}
  24. ): MMRESULT;       {成功返回 0; 可能的错误值见下:}

  25. MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
  26. MMSYSERR_HANDLEBUSY  = 12; {设备已被另一线程使用}


  27. WinAPI: waveOutClose - 关闭设备
  28. 提示: 若正在播放, 应先调用 waveOutReset 终止播放, 然后再关闭, 不然会失败.
  29. //声明:
  30. waveOutClose(
  31.   hWaveOut: HWAVEOUT {设备句柄}
  32. ): MMRESULT;         {成功返回 0; 可能的错误值见下:}

  33. MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
  34. MMSYSERR_HANDLEBUSY  = 12; {设备已被另一线程使用}
  35. WAVERR_STILLPLAYING  = 33; {缓冲区还在队列中}
复制代码