midiOutPrepareHeader 函数 (mmeapi.h)

midiOutPrepareHeader 函数为输出准备 MIDI 系统独占或流缓冲区。

语法

MMRESULT midiOutPrepareHeader(
  HMIDIOUT  hmo,
  LPMIDIHDR pmh,
  UINT      cbmh
);

参数

hmo

MIDI 输出设备的句柄。 若要获取设备句柄,请调用 midiOutOpen。 此参数还可以是将 MIDI 流强制转换为 HMIDIOUT 类型的句柄。

pmh

指向用于标识要准备的缓冲区的 MIDIHDR 结构的指针。

在调用函数之前,请设置 MIDIHDR 结构的 lpDatadwBufferLengthdwFlags 成员。 dwFlags 成员必须设置为零。

cbmh

MIDIHDR 结构的大小(以字节为单位)。

返回值

如果成功,则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
MMSYSERR_INVALHANDLE
指定的设备句柄无效。
MMSYSERR_INVALPARAM
指定的地址无效或给定的流缓冲区大于 64K。
MMSYSERR_NOMEM
系统无法分配或锁定内存。

注解

在将 MIDI 数据块传递到设备驱动程序之前,必须通过将缓冲区传递到 midiOutPrepareHeader 函数来准备缓冲区。 准备好标头后,请勿修改缓冲区。 使用缓冲区完成驱动程序后,调用 midiOutUnprepareHeader 函数。

应用程序可以重复使用同一个缓冲区,或者分配多个缓冲区,并为每个缓冲区调用 midiOutPrepareHeader 。 如果重复使用同一个缓冲区,则无需每次都准备缓冲区。 可以在开头调用 midiOutPrepareHeader 一次,然后在末尾调用 midiOutUnprepareHeader 一次。

流缓冲区不能大于 64K。

准备已准备好的标头不起作用,函数返回MMSYSERR_NOERROR。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmeapi.h (包括 Windows.h)
Library Winmm.lib
DLL Winmm.dll

另请参阅

分配和准备 MIDI 数据块

MIDI 函数

midiOutUnprepareHeader