文档章节

WinAPI: waveOutUnprepareHeader - 清除由 waveOutPrepareHeader 完成的准备

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 314
阅读 9
收藏 0
提示:
设备使用完数据块后, 须调用此函数;
释放(GlobalFree)缓冲区前, 须调用此函数;
取消一个尚未准备的缓冲区将无效, 但函数返回 0
//声明:
waveOutUnprepareHeader(
  hWaveOut: HWAVEOUT;     {设备句柄}
  lpWaveOutHdr: PWaveHdr; {TWaveHdr 结构的指针}
  uSize: UINT             {TWaveHdr 结构大小}
): MMRESULT;              {成功返回 0; 可能的错误值见下:}

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

//TWaveHdr 是 wavehdr_tag 结构的重定义
wavehdr_tag = record
  lpData: PChar;          {指向波形数据缓冲区}
  dwBufferLength: DWORD;  {波形数据缓冲区的长度}
  dwBytesRecorded: DWORD; {若首部用于输入, 指出缓冲区中的数据量}
  dwUser: DWORD;          {指定用户的32位数据}
  dwFlags: DWORD;         {缓冲区标志}
  dwLoops: DWORD;         {循环播放次数, 仅用于输出缓冲区}
  lpNext: PWaveHdr;       {保留}
  reserved: DWORD;        {保留}
end;

//TWaveHdr 中的 dwFlags 的可选值:
WHDR_DONE      = $00000001; {设备已使用完缓冲区, 并返回给程序}
WHDR_PREPARED  = $00000002; {waveInPrepareHeader 或 waveOutPrepareHeader 已将缓冲区准备好}
WHDR_BEGINLOOP = $00000004; {缓冲区是循环中的第一个缓冲区, 仅用于输出}
WHDR_ENDLOOP   = $00000008; {缓冲区是循环中的最后一个缓冲区, 仅用于输出}
WHDR_INQUEUE   = $00000010; { reserved for driver }

 
 
 
 
 

 

 

  
//举例:

本文转载自:http://www.cnblogs.com/del/archive/2008/02/20/1075695.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
waveOutOpen 函数说明

waveOutOpen 函数说明 (2008-12-21 13:33:10) 转载▼ 使用心得:首先打开声音输出设备,然后初始化输出内存,并保证不要使用缓存;(调用waveOutPrepareHeader设置内存),然后通过回调函数进...

薛蕊
2014/05/28
0
0
使用waveOut接口在Windows中播放声音

使用waveOut接口在Windows中播放声音 转贴地址:http://wmnmtm.blog.163.com/blog/static/382457142011101314135546/ ####################### //声明: 1 本帖作者是:加菲 ,至此感谢! 2 ...

ll124884135
2012/05/29
0
0
WaveOutXX 播放PCM流

最新在WM上开发音频想关的东西, 遇到的麻烦是播放流文件的时候会一顿一顿的,网上找了找答案,是由于没有用到双缓冲。网上遇到了一段代码,给了我很大帮助。在此分享。。。。 //waveout.h ...

长平狐
2012/08/13
915
0
Windows 音频知识学习汇总

使用低级音频函数 WaveX : http://blog.csdn.net/kvw3000/article/details/68468 控制着不同的音频设备, 包括 wave, midi 和辅助音频设备. 低级服务包括: (1) 查询音频设备. (2) 打开和关闭设...

刘军兴
2015/12/16
19
0
恶意代码分析利器--SCDBG

scdbg是一款多平台开源的Shellcode模拟运行、分析工具。其基于libemulibrary搭建的虚拟环境,通过模拟32位处理器、内存和基本Windows API运行环境来虚拟执行Shellcode以分析其行为。有了虚拟...

滔哥
2013/12/25
9.5K
5

没有更多内容

加载失败,请刷新页面

加载更多

大数据反欺诈技术架构

一年多以前,有朋友让我聊一下你们的大数据反欺诈架构是怎么实现的,以及我们途中踩了哪些坑,怎么做到从30min延迟优化到1s内完成实时反欺诈。当时呢第一是觉得不合适,第二也是觉得场景比较...

微笑向暖wx
27分钟前
1
0
flink-系统内部消息传递的exactly once语义

At Most once,At Least once和Exactly once 在分布式系统中,组成系统的各个计算机是独立的。这些计算机有可能fail。 一个sender发送一条message到receiver。根据receiver出现fail时sender如...

xtof
34分钟前
1
0
iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iO...

壹峰
36分钟前
1
0
配置网络、远程登录、Linux秘钥认证

配置网络 一台服务器安装完系统之后不管是为了方便管理还是业务需要,我们都要给它配置ip地址。让机器能够联网。在现实的生产环境的当中,往往我们给服务器配置的ip都是提前规划好的,但是在...

李超小牛子
39分钟前
1
0
dotConnect for Oracle入门指南(五):检索和修改数据

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部