系统截获的设备消息

以下 Windows 多媒体功能为呼叫者提供了将消息传递到旧音频设备的方法:

其中一些设备消息由设备驱动程序直接处理,有些消息由系统代表设备进行处理。

本部分仅讨论系统截获并处理的消息,而不会传递给设备驱动程序。 系统截获的消息可以获取用于语音通信或常规音频使用的首选设备。 此外,系统截获的消息可以提供有关特定设备的以下信息:

  • 设备接口名称

    有关设备接口名称的信息,请参阅 设备接口简介

  • 设备的即插即用开发节点编号

    For information about devnodes, see Device Tree.

  • 映射器是否可以使用设备

    映射器通过将应用程序的要求映射到系统中的可用设备之一来选择适当的设备。 有关映射器的详细信息,请参阅 Microsoft Windows SDK 文档。

有关其他类型的设备消息的信息,请参阅 Windows SDK 文档。

An XxxMessage function has the following syntax:

DWORD XxxMessage(
<device ID>,
    UINT  uMsg,
    DWORD_PTR  dwParam1,
    DWORD_PTR  dwParam2
    );

第一个参数是设备 ID。 The auxOutMessage function definition specifies this parameter to be of type UINT, as expected. However, in the case of waveInMessage, waveOutMessage, midiInMessage, midiOutMessage, or mixerMessage, the caller must cast the device ID to handle type HWAVEIN, HWAVEOUT, HMIDIIN, HMIDIOUT, or HMIXER, respectively. 请注意,如果调用方提供有效的句柄而不是此参数的设备 ID,函数将失败并返回错误代码MMSYSERR_NOSUPPORT。

The uMsg parameter specifies a message value (for example, DRV_QUERYDEVICEINTERFACE). 有关特定于驱动程序的消息的列表,请参阅头文件 Mmddk.h。

The meaning of parameters dwParam1 and dwParam2 depends on the message. For example, a particular message might require that dwParam1 be a ULONG value; the caller must cast this value to type DWORD_PTR to satisfy the function definition.

如果调用成功,则函数返回MMERR_NOERROR;否则返回错误状态代码。

For more information about the XxxMessage functions, see the Windows SDK documentation.

头文件 Mmddk.h 定义以下系统截获的设备消息:

DRV_QUERYDEVICEINTERFACE

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

DRV_QUERYDEVICEINTERFACESIZE

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

DRV_QUERYDEVNODE

查询设备的开发节点编号。

DRV_QUERYMAPPABLE

查询映射器是否可以使用设备。

DRVM_MAPPER_CONSOLEVOICECOM_GET

有关详细信息,请参阅 首选 Voice-Communications 设备 ID

DRVM_MAPPER_PREFERRED_GET

有关详细信息,请参阅 访问首选设备 ID