(WMDM) 枚举设备

Windows Media 设备管理器维护连接的设备的缓存,这些设备在 Windows Media 设备管理器 应用程序启动时、即插即用 (PnP) 设备连接或断开连接时,或应用程序调用 IWMDeviceManager2::Reinitialize 时更新。 此缓存在调用 IWMDeviceManager::EnumDevicesIWMDeviceManager2::EnumDevices2 时向应用程序公开。 每个设备都作为 IWMDMDevice 接口向应用程序公开。 如果注册了服务提供商以处理 PnP 设备,Windows Media 设备管理器将注意到连接的设备的当前列表。 如果服务提供商已注册以处理非 PnP 设备,则服务提供商负责发现附加的设备。 服务提供商只能为 PnP 或非 PnP 设备注册,而不能同时注册两者。

以下操作演示 Windows Media 设备管理器如何维护或更新其缓存。 请注意,当非 PnP 设备连接或断开连接时,缓存永远不会更新。

Windows Media 设备管理器 应用程序启动

  • Windows Media 设备管理器从 PnP 子系统检索附加的 PnP 设备的列表,并在为每个连接的设备注册的 SP 上调用 IMDServiceProvider2::CreateDevice。 (它通过查询负责此设备的服务提供商的类 ID 的 WMDMSPCLSID 设备参数来发现正确的服务提供商。有关详细信息,请参阅设备参数。) 返回的所有设备都添加到 Windows Media 设备管理器设备的缓存中。
  • Windows Media 设备管理器查找注册到它的所有非 PnP 服务提供商,并调用每个服务提供商上的 IMDServiceProvider::EnumDevices,从每个提供程序获取设备列表。 返回的所有设备都会添加到缓存中。

应用程序调用 IWMDeviceManager/2::EnumDevices/2

  • Windows Media 设备管理器 返回其缓存的设备列表。

PnP 设备连接

  • Windows Media 设备管理器查找相关服务提供商并调用 IMDServiceProvider2::CreateDevice,并将设备添加到其缓存中。
  • 如果应用程序实现 IWMDMNotification,Windows Media 设备管理器调用 IWMDMNotification::WMDMMessage 并发出到达通知。

PnP 设备断开连接

  • Windows Media 设备管理器从其缓存中删除该项。
  • 如果应用程序实现 IWMDMNotification,Windows Media 设备管理器调用 IWMDMNotification::WMDMMessage 并发出出发通知。

应用程序调用 IWMDeviceManager2::Reinitialize

  • 使用所有连接的设备刷新缓存。

非 PnP 设备连接或断开连接

  • Windows Media 设备管理器不会收到有关到达或离开的通知,也不会采取任何措施。

创建服务提供商