waveInMessage 函数 (mmeapi.h)

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

语法

MMRESULT waveInMessage(
  HWAVEIN   hwi,
  UINT      uMsg,
  DWORD_PTR dw1,
  DWORD_PTR dw2
);

参数

hwi

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

uMsg

要发送的消息。

dw1

消息参数。

dw2

消息参数。

返回值

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

注解

消息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_QUERYDEVICEINTERFACESIZE未使用 dwParam2 。 将此参数设置为零。

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

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

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

DRV_QUERYDEVNODE消息查询由即插即用管理器分配给设备的 devnode 编号。

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

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

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

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

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

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

此消息仅对 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 仅使用当前首选语音通信设备,如果首选设备不可用,则不搜索其他可用设备。 waveInMessage 或 waveOutMessage 调用输出的标志适用于 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

另请参阅

波形音频

波形函数