使用waveOutPrepareHeader函数时特别注意,参数LPWAVEHDR pwh不能用保存在栈变量
来源:互联网 发布:什么是网络语言 编辑:程序博客网 时间:2024/05/16 10:39
今日个用waveOut系列函数播放wav文件时,发现老接收不到MM_WOM_DONE消息。调试了好久,发现是我在调用waveOutPrepareHeader函数时第二个参数LPWAVEHDR pwh用的是栈中的自动变量。函数运行完后pwh结构也没了,所以就再也收不到MM_WOM_DONE消息了。改为new一个WAVEHDR结构变量后,终于能收到MM_WOM_DONE消息了。原因是因为这个参数时一个in-out参数,在MM_WOM_DONE消息的处理函数中会返回给你的,到时候再释放也不迟。
MSDN上waveOutPrepareHeader函数的remark应该加入一点:pwh参数不能用自动变量,取非你不想处理MM_WOM_DONE消息。
一般是在waveOutPrepareHeader函数前new一个WAVEHDR结构体变量,然后在waveOutUnprepareHeader函数中处理你new的这个变量。
- 使用waveOutPrepareHeader函数时特别注意,参数LPWAVEHDR pwh不能用保存在栈变量
- instr 不能用变量在 参数里,来创建函数索引 利用返回值[待总结]
- 参数或变量不能用
- 使用cvcloneimage函数时特别注意
- 指针变量作为函数参数使用时注意的问题!
- PHP自定义函数不能用外部变量
- PHP函数参数不能用下划线开头
- 怎样在不使用第三方变量交换函数的两个参数
- 使用可变参数;不能用float 截断
- ajax data传参数时{id:id} 和 {id,id} 在谷歌下都能用,在其他浏览器{id,id}不能用
- gdb调试core时能用i locals看栈变量、函数行(即不出现No symbol table info available)的必要条件: 1. 编译时有-g参数; 2.so库未被strip脱衣服
- 不使用第三方变量交换函数的两个参数
- 在使用线程池时应特别注意对ThreadLocal的使用
- java为什么定义的变量在main中不能用?
- 在ATL中怎么不能用模板类作为参数?
- 组件使用特别注意 CoInitialize
- ISNULL函数在VB.net不能用吗
- javascript trim函数在IE下不能用
- CUDA任意维度的矩阵相乘
- 美团网2014笔试算法题汇总
- 兼容WNR2200原版uboot的镜像打包
- 【C语言】09-流程控制
- 国庆节了,VDC项目要发力了
- 使用waveOutPrepareHeader函数时特别注意,参数LPWAVEHDR pwh不能用保存在栈变量
- CUDA实现 全局光照中辐射度(Radiosity)算法
- 基于用户的协作性过滤推荐系统(为用户推荐影片)
- 【C语言】10-函数
- prim算法
- 静态链接库与动态链接库
- 暴风影音2014笔试算法题汇总
- CUDA和OpenCV实现的图像GAMMA变换
- WPF Tips: Window.ShowDialog()方法:Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelp