Compartilhar via


Enumerando dispositivos (WMDM)

O Windows Media Gerenciador de Dispositivos mantém um cache de dispositivos conectados que é atualizado quando um aplicativo do Windows Media Gerenciador de Dispositivos é iniciado, quando um dispositivo PnP (Plug and Play) se conecta ou desconecta ou quando o aplicativo chama IWMDeviceManager2::Reinitialize. Esse cache é exposto ao aplicativo quando chama IWMDeviceManager::EnumDevices ou IWMDeviceManager2::EnumDevices2. Cada dispositivo é exposto ao aplicativo como uma interface IWMDMDevice . Se o provedor de serviços estiver registrado para lidar com dispositivos PnP, o Windows Media Gerenciador de Dispositivos estará ciente da lista atual de dispositivos conectados. Se o provedor de serviços estiver registrado para lidar com dispositivos não PnP, o provedor de serviços será responsável por descobrir dispositivos anexados. Um provedor de serviços só pode ser registrado para dispositivos PnP ou não PnP, nunca ambos.

As ações a seguir mostram como o Windows Media Gerenciador de Dispositivos mantém ou atualiza seu cache. Observe que o cache nunca é atualizado quando um dispositivo não PnP se conecta ou desconecta.

Um aplicativo do Windows Media Gerenciador de Dispositivos é iniciado

  • O Windows Media Gerenciador de Dispositivos recupera uma lista de dispositivos PnP anexados do subsistema PnP e chama IMDServiceProvider2::CreateDevice no SP registrado para cada dispositivo conectado. (Ele descobre o provedor de serviços correto consultando o parâmetro de dispositivo WMDMSPCLSID para a ID de classe do provedor de serviços responsável por esse dispositivo. Consulte Parâmetros do dispositivo para obter mais informações.) Todos os dispositivos retornados são adicionados ao cache do Windows Media Gerenciador de Dispositivos de dispositivos.
  • O Windows Media Gerenciador de Dispositivos localiza todos os provedores de serviços não PnP registrados com ele e chama IMDServiceProvider::EnumDevices em cada provedor de serviços para obter um dispositivo de lista de cada um. Todos os dispositivos retornados são adicionados ao cache.

O aplicativo chama IWMDeviceManager/2::EnumDevices/2

  • O Windows Media Gerenciador de Dispositivos retorna sua lista de dispositivos armazenados em cache.

Um dispositivo PnP se conecta

  • O Windows Media Gerenciador de Dispositivos localiza o provedor de serviços relevante e chama IMDServiceProvider2::CreateDevice e adiciona o dispositivo ao seu cache.
  • Se o aplicativo implementar IWMDMNotification, o Windows Media Gerenciador de Dispositivos chamará IWMDMNotification::WMDMMessage com uma notificação de chegada.

Um dispositivo PnP desconecta

  • O Windows Media Gerenciador de Dispositivos remove o item de seu cache.
  • Se o aplicativo implementar IWMDMNotification, o Windows Media Gerenciador de Dispositivos chamará IWMDMNotification::WMDMMessage com uma notificação de partida.

O aplicativo chama IWMDeviceManager2::Reinitialize

  • Atualiza o cache com todos os dispositivos conectados.

Um dispositivo não PnP se conecta ou desconecta

  • O Gerenciador de Dispositivos do Windows Media não é informado sobre a chegada ou partida e não toma nenhuma ação.

Criando um provedor de serviços