文档章节

WinAPI: midiInPrepareHeader - 为 MIDI 输入准备一个缓冲区

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 287
阅读 6
收藏 0
提示:
缓冲区写满后送回应用程序.
在缓冲区给 midiInAddBuffer 前, 先要调用 midiInPrepareHeader 准备; 还要调用 GlobalAlloc 给 TWaveHdr 和其中的 lpData 指向的缓冲区分配内存(使用 GMEM_MOVEABLE、GMEM_SHARE), 并用 GlobalLock 锁定.
//声明:
midiInPrepareHeader(
  hMidiIn: HMIDIIN;      {设备句柄}
  lpMidiInHdr: PMidiHdr; {TMidiHdr 结构指针}
  uSize: UINT            {TMidiHdr 结构大小}
): MMRESULT;             {成功返回 0; 可能的错误值如下:}

MMSYSERR_INVALHANDLE = 5;  {设备句柄无效}
MMSYSERR_NOMEM       = 7;  {不能分配或锁定内存}
MIDIERR_UNPREPARED   = 64; {TMidiHdr 没有准备好}

//TMidiHdr 是 midihdr_tag 结构的重定义:
midihdr_tag = record
  lpData: PChar;               {专用缓冲区的指针}
  dwBufferLength: DWORD;       {指定缓冲区长度}
  dwBytesRecorded: DWORD;      {输入时, 指定缓冲区中的数据量}
  dwUser: DWORD;               {指定用户数据}
  dwFlags: DWORD;              {指定缓冲区信息标志}
  lpNext: PMidiHdr;            {保留(给设备)}
  reserved: DWORD;             {保留(给设备)}
  dwOffset: DWORD;             {回调开始时, 缓冲区的偏移}
  dwReserved: array[0..7] of DWORD; {保留(给系统)}
end;

//dwFlags 的可选值:
MHDR_DONE     = $00000001; {设备已把缓冲区交还给程序}
MHDR_PREPARED = $00000002; {已为 midiInPrepareHeader 或 midiOutPrepareHeader 准备好缓冲区}
MHDR_INQUEUE  = $00000004; {保留(给设备)}
MHDR_ISSTRM   = $00000008; {是流缓冲区}

 
 
 
 
 

 

 

  
//举例:

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

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Jna报Invalid memory access错误是怎么回事?

1、各位大神,在用jna时,总是报错,如下 Exception in thread "main" java.lang.Error: Invalid memory access at com.sun.jna.Native.invokeInt(Native Method) at com.sun.jna.Function.i......

一叶知秋至
01/31
0
0
Windows 音频知识学习汇总

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

刘军兴
2015/12/16
19
0
Win32多语言IME应用程序编程接口(API)

十三、IMM函数 1、IMM用户界面函数 以下是用户界面窗口可以使用的输入法管理器函数。应用程序也可以使用它们改变输入法的状态。 ImmGetCompositionWindow ImmSetCompositionWindow ImmGetCa...

yousss
04/25
0
0
vc编程的ime输入法菜单开发

WINDOWS 下 IME 编程 IME 编程心得 第一章 Windows9x 系统下汉字输入法的基本原理 第二章 Windows9x 系统提供的 ime 管理函数 第三章 ime 文件中必须使用的结构 自由拼音输入法的测试 输入法...

crossmix
2014/12/07
0
3
MusE 2.0 发布,Linux 的虚拟演播室

MusE 2.0 发布,该版本新增分数编辑器、项目对话框和新的 MIDI 编辑对话框,对已有的功能也做了不少的改进。 MusE 是一个多轨的Linux虚拟演播室。它支持在一个集成的环境中实时MIDI和音频实时...

oschina
2012/07/02
700
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部