系统截获的设备消息

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

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

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

  • 设备接口名称

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

  • 设备的 即插即用 devnode 编号

    有关开发节点的信息,请参阅 设备树

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

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

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

XxxMessage 函数具有以下语法:

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

第一个参数是设备 ID。 auxOutMessage 函数定义指定此参数的类型为 UINT,如预期所示。 但是,在 waveInMessage、waveOutMessage、midiInMessagemidiOutMessage mixerMessage 的情况下,调用方必须强制转换设备 ID 来处理 HWAVEIN、HWAVEOUT、HMIDIIN、HMIDIOUT 或 HMIXER 类型。 请注意,如果调用方提供有效的句柄而不是此参数的设备 ID,函数将失败并返回错误代码 MMSY标准版RR_NOSUPPORT。

uMsg 参数指定消息值(例如,DRV_QUERYDEVICEINTERFACE)。 有关特定于驱动程序的消息的列表,请参阅头文件 Mmddk.h。

参数 dwParam1dwParam2 的含义取决于消息。 例如,特定消息可能需要 dwParam1 为 ULONG 值;调用方必须将此值强制转换为类型DWORD_PTR才能满足函数定义。

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

有关 Xxx消息函数的详细信息,请参阅 Windows SDK 文档。

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

DRV_QUERYDEVICEINTERFACE

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

DRV_QUERYDEVICEINTERFACESIZE

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

DRV_QUERYDEVNODE

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

DRV_QUERYMAPPABLE

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

DRVM_MAPPER_CONSOLEVOICECOM_GET

有关详细信息,请参阅 首选语音通信设备 ID

DRVM_MAPPER_PREFERRED_GET

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