waveOutMessage 函数 (mmeapi.h)

waveOutMessage 函数将消息发送到波形音频输出设备驱动程序。

语法

MMRESULT waveOutMessage(
  HWAVEOUT  hwo,
  UINT      uMsg,
  DWORD_PTR dw1,
  DWORD_PTR dw2
);

parameters

hwo

接收消息的波形设备的标识符。 必须将设备 ID 强制转换为 HWAVEOUT 句柄类型。 如果提供句柄而不是设备 ID,则函数将失败并返回MMSYSERR_NOSUPPORT错误代码。

uMsg

要发送的消息。

dw1

Message 参数。

dw2

Message 参数。

返回值

返回从驱动程序返回的值。

注解

消息DRV_QUERYDEVICEINTERFACE查询 waveIn、waveOutmidiInmidiOutmixer 设备的设备接口名称。

对于 DRV_QUERYDEVICEINTERFACEdwParam1 是指向调用方分配的缓冲区的指针,函数在其中写入包含设备接口名称的以 null 结尾的 Unicode 字符串。 如果设备没有设备接口,则字符串长度为零。

对于 DRV_QUERYDEVICEINTERFACEdwParam2 指定缓冲区大小(以字节为单位)。 这是函数的输入参数。 调用方应指定大于或等于 DRV_QUERYDEVICEINTERFACESIZE 消息检索的缓冲区大小的大小。

Windows Me 和 Windows 2000 及更高版本中支持DRV_QUERYDEVICEINTERFACE消息。 此消息仅对 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 函数有效。 系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

以下两个消息常量一起使用,用于获取设备接口名称:

  • DRV_QUERYDEVICEINTERFACESIZE
  • DRV_QUERYDEVICEINTERFACE
第一条消息获取保存包含设备接口名称的字符串所需的缓冲区大小(以字节为单位)。 第二条消息检索所需大小的缓冲区中的名称字符串。

有关详细信息,请参阅 获取设备接口名称

消息 DRV_QUERYDEVICEINTERFACESIZE 查询保存设备接口名称所需的缓冲区大小。

对于 DRV_QUERYDEVICEINTERFACESIZEdwParam1 是指向缓冲区大小的指针。 此参数指向一个 ULONG 变量,函数在其中写入所需的缓冲区大小(以字节为单位)。 大小包括名称字符串的终止 null 的存储空间。 如果设备 ID 标识没有设备接口的设备,则大小为零。

对于 DRV_QUERYDEVICEINTERFACESIZEdwParam2 未使用。 将此参数设置为零。

此消息仅对 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 函数有效。 系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

此消息检索到的缓冲区大小表示为字节计数。 它指定保存包含设备接口名称的以 null 结尾的 Unicode 字符串所需的缓冲区大小。 调用方分配指定大小的缓冲区,并使用 DRV_QUERYDEVICEINTERFACE 消息检索设备接口名称字符串。

有关详细信息,请参阅 获取设备接口名称

DRV_QUERYDEVNODE 消息查询即插即用管理器分配给设备的 开发节点 编号。

对于 DRV_QUERYDEVNODEdwParam1 是指向调用方分配的 DWORD 变量的指针,函数将 devnode 编号写入其中。 如果未将 devnode 分配给设备,则函数将此变量设置为零。

对于 DRV_QUERYDEVNODEdwParam2 未使用。 将此参数设置为零。

在 Windows 2000 及更高版本中,该消息始终返回MMSYSERR_NOTSUPPORTED。 此消息仅对 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 函数有效。 系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

消息 DRV_QUERYMAPPABLE 查询映射器是否可以使用指定的设备。

对于 DRV_QUERYMAPPABLEdwParam1 未使用。 将此参数设置为零。

对于 DRV_QUERYMAPPABLEdwParam2 未使用。 将此参数设置为零。

此消息仅对 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessageauxOutMessage 函数有效。 系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

当应用程序打开映射器而不是特定音频设备时,系统会在应用程序和可用设备之间插入映射器。 映射器通过将应用程序的要求映射到某个可用设备来选择合适的设备。 有关映射器的详细信息,请参阅Microsoft Windows SDK文档。

DRVM_MAPPER_CONSOLEVOICECOM_GET 消息检索首选语音通信设备的设备 ID。

对于 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam1 是指向设备 ID 的指针。 此参数指向一个 DWORD 变量,函数在其中写入当前首选语音通信设备的设备 ID。 如果没有任何设备可限定为首选语音通信设备,函数会将值写入 (-1) 。

对于 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam2 是指向状态标志的指针。 此参数指向函数在其中写入设备状态标志的 DWORD 变量。 当前只定义了一个标志位:DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。

此消息仅对 waveInMessagewaveOutMessage 函数有效。 当调用方使用DRVM_MAPPER_CONSOLEVOICECOM_GET消息调用这两个函数时,调用方必须将设备 ID 指定为WAVE_MAPPER,然后将此值强制转换为相应的句柄类型。 对于 waveInMessagewaveOutMessagemidiInMessagemidiOutMessagemixerMessage 函数,调用方必须将设备 ID 分别强制转换为 HWAVEIN、HWAVEOUT、HMIDIIN、HMIDIOUT 或 HMIXER 类型的句柄。 请注意,如果调用方为此参数提供有效的句柄而不是设备 ID,则函数将失败并返回错误代码MMSYSERR_NOSUPPORT。

系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

DRVM_MAPPER_PREFERRED_GET 消息相比,此消息提供了一种方法来确定哪个设备是语音通信的首选设备,后者确定哪个设备是所有其他音频功能的首选设备。

例如,用于语音通信的首选 waveOut 设备可能是耳机中的听筒,但所有其他音频功能的首选 waveOut 设备可能是一组立体声扬声器。

dwParam2 指向的 DWORD 位置中设置DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY标志位时, waveInwaveOut API 仅使用当前首选的语音通信设备,如果首选设备不可用,则不搜索其他可用设备。 由 waveInMessagewaveOutMessage 调用输出的标志适用于 waveInwaveOut API 的首选语音通信设备,无论调用 waveInMessage 还是 waveOutMessage。 有关详细信息,请参阅 首选 Voice-Communications 设备 ID

DRVM_MAPPER_PREFERRED_GET 消息检索首选音频设备的设备 ID。

对于 DRVM_MAPPER_PREFERRED_GETdwParam1 是指向设备 ID 的指针。 此参数指向一个 DWORD 变量,函数在其中写入当前首选设备的设备 ID。 如果 (-1) ,函数将值写入,前提是没有作为首选设备可用的设备。

对于 DRVM_MAPPER_PREFERRED_GETdwParam2 是指向状态标志的指针。 此参数指向函数在其中写入设备状态标志的 DWORD 变量。 目前只有一个标志位 (为 waveInMessagewaveOutMessage 调用定义了) :DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。

此消息仅对 waveInMessagewaveOutMessagemidiOutMessage 函数有效。 当调用方使用DRVM_MAPPER_PREFERRED_GET消息调用这些函数时,调用方必须首先将设备 ID 指定为 waveInMessagewaveOutMessage) 的WAVE_MAPPER (,或者指定 midiOutMessage) MIDI_MAPPER (,然后将此值转换为相应的句柄类型。 对于 waveInMessagewaveOutMessagemidiOutMessage 函数,调用方必须将设备 ID 分别转换为句柄类型 HWAVEIN、HWAVEOUT 或 HMIDIOUT。 请注意,如果调用方为此参数提供有效的句柄而不是设备 ID,则函数将失败并返回错误代码MMSYSERR_NOSUPPORT。

系统截获此消息并返回相应的值,而不将消息发送到设备驱动程序。 有关系统截获 的 xxxMessage 函数的 一般信息,请参阅 系统截获的设备消息

此消息提供了一种确定音频功能首选设备的方法,与 DRVM_MAPPER_CONSOLEVOICECOM_GET 消息相反,该消息确定哪个设备是专用于语音通信的首选设备。

dwParam2 指向的 DWORD 位置中设置DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY标志位时, waveInwaveOut API 仅使用当前首选设备,如果首选设备不可用,则不搜索其他可用设备。 请注意, midiOutMessage 函数不输出此标志 -- midiOut API 始终仅使用首选设备。 由 waveInMessagewaveOutMessage 调用输出的标志适用于 waveInwaveOut API 的首选设备,无论调用 waveInMessage 还是 waveOutMessage

xxxMessage 函数接受此值来代替有效的设备句柄,以便应用程序无需先打开设备即可确定默认设备 ID。 有关详细信息,请参阅 访问首选设备 ID

要求

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

另请参阅

波形音频

波形函数