命令快捷方式和变体

[与此页面关联的功能 MCI 是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 MCI。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

使用 MCI 命令时,可以使用多个快捷方式。 这些快捷方式使你能够使用单个标识符来引用应用程序已打开的所有设备,或者在不显式发出 打开 (MCI_OPEN) 命令的情况下打开设备。

可以将“all” (MCI_ALL_DEVICE_ID) 指定为不返回信息的任何命令的设备标识符。 指定“all”时,MCI 按顺序将命令发送到当前应用程序打开的所有设备。

例如, 关闭 “全部”命令关闭所有打开的设备, 播放 “全部”命令开始播放应用程序打开的所有设备。 由于 MCI 按顺序将命令发送到 MCI 设备,因此第一个和最后一个设备接收命令之间有一段间隔。

使用“all”是将命令广播到所有设备的便捷方法,但不应依赖它来同步设备;消息之间的计时可能会有所不同。

发出命令并指定未打开的设备时,MCI 会尝试在实现命令之前打开设备。 以下规则适用于自动打开设备:

  • 自动打开功能仅适用于命令字符串接口。
  • 对于特定于自定义设备驱动程序的命令,自动打开功能失败。
  • 自动打开的设备不会响应使用“all”作为设备名称的命令。
  • 自动打开功能不允许应用程序指定“类型”标志。 如果没有设备名称,MCI 将从注册表中的条目中确定设备名称。 若要使用特定设备,可以使用感叹号将设备名称与文件名合并,如 open 命令的参考资料中所述。

如果应用程序使用自动打开功能打开设备,则应用程序应检查每个后续打开命令的返回值,以验证设备是否仍处于打开状态。 MCI 还会自动关闭它自动打开的任何设备。 在以下情况下,MCI 通常会关闭设备:

  • 命令已完成。
  • 中止命令。
  • 在后续命令中请求通知。
  • MCI 检测到故障。