acmDriverPriority 函数 (msacm.h)

acmDriverPriority 函数修改 ACM 驱动程序的优先级和状态。

语法

MMRESULT ACMAPI acmDriverPriority(
  HACMDRIVERID hadid,
  DWORD        dwPriority,
  DWORD        fdwPriority
);

参数

hadid

已安装的 ACM 驱动程序的驱动程序标识符的句柄。 如果指定了ACM_DRIVERPRIORITYF_BEGIN和ACM_DRIVERPRIORITYF_END标志,则此参数必须为 NULL

dwPriority

全局 ACM 驱动程序标识符的新优先级。 零值指定驱动程序标识符的优先级应保持不变。 值 1 指定驱动程序应作为最高搜索优先级驱动程序放置。 值 –1 指定驱动程序应作为最低搜索优先级驱动程序放置。 优先级仅用于全局驱动程序。

fdwPriority

用于设置 ACM 驱动程序优先级的标志。 定义了以下值。

含义
ACM_DRIVERPRIORITYF_BEGIN 应延迟更改通知广播。 应用程序必须尽快使用 ACM_DRIVERPRIORITYF_END 标志重新允许通知广播。 请注意,hadid 必须为 NULL,dwPriority 必须为零,并且只能设置ACM_DRIVERPRIORITYF_BEGIN标志。
ACM_DRIVERPRIORITYF_DISABLE 如果 ACM 驱动程序当前已启用,则应禁用它。 禁用已禁用的驱动程序没有任何作用。
ACM_DRIVERPRIORITYF_ENABLE 如果 ACM 驱动程序当前处于禁用状态,则应启用它。 启用已启用的驱动程序不会执行任何操作。
ACM_DRIVERPRIORITYF_END 调用任务希望重新允许更改通知广播。 对于每个具有 ACM_DRIVERPRIORITYF_BEGIN 标志的成功调用,应用程序必须使用ACM_DRIVERPRIORITYF_END调用 acmDriverPriority 。 请注意,hadid 必须为 NULL,dwPriority 必须为零,并且只能设置ACM_DRIVERPRIORITYF_END标志。

返回值

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

返回代码 说明
MMSYSERR_ALLOCATED
延迟广播锁由其他任务拥有。
MMSYSERR_INVALFLAG
至少有一个标志无效。
MMSYSERR_INVALHANDLE
指定的句柄无效。
MMSYSERR_INVALPARAM
至少有一个参数无效。
MMSYSERR_NOTSUPPORTED
指定的驱动程序不支持请求的操作。 例如,本地和通知驱动程序标识符不支持 (优先级,但可以在) 启用和禁用。 如果应用程序为本地和通知驱动程序标识符指定 dwPriority 的非零值,则将返回此错误。

注解

可以启用和禁用所有驱动程序标识符,包括全局、本地和通知驱动程序标识符。

如果需要启用、禁用或转移多个全局驱动程序标识符的优先级,应用程序应使用ACM_DRIVERPRIORITYF_BEGIN标志来延迟更改通知广播。 指定ACM_DRIVERPRIORITYF_END标志时,将广播单个更改通知。

应用程序可以将 函数与 acmMetrics ACM_METRIC_DRIVER_PRIORITY指标索引结合使用,以检索全局驱动程序的当前优先级。 acmDriverEnum 函数始终从最高到最低优先级枚举驱动程序。

所有已启用的驱动程序标识符都将收到更改通知。 应用程序可以通过将 acmDriverAdd 函数与 ACM_DRIVERADDF_NOTIFYHWND 标志结合使用来注册通知消息。 不会广播对非全局驱动程序标识符的更改。

当应用程序未指定驱动程序时,优先级仅用于搜索顺序。 提升驱动程序的优先级不会影响驱动程序的性能。

要求

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

另请参阅

音频压缩函数

音频压缩管理器