Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O controlador da classe de vídeo USB disponibiliza unidades de extensão como nós no filtro proxy KS de vídeo USB. Os controles de unidade de extensão são ainda mais expostos no modo de usuário como uma propriedade definida no nó, que é do tipo KSNODETYPE_DEV_SPECIFIC. O GUID do conjunto de propriedades corresponde ao GUID do descritor da Unidade de Extensão.
Os controles individuais da unidade de extensão devem ser numerados continuamente de 1 a algum valor máximo n. Esses controles são mapeados diretamente para identificadores de propriedade (IDs) no conjunto de propriedades Extension Unit e podem ser acessados usando solicitações KSPROPERTY padrão por meio de IKsControl.
Em resposta a solicitações de propriedade de aplicações, o driver UVC retorna valores de propriedade que têm o membro MembersFlags da estrutura KSPROPERTY_MEMBERSHEADER definido exclusivamente como KSPROPERTY_MEMBER_RANGES. O UVC não suporta intervalos escalonados ou valores padrão de unidade de extensão de comprimento arbitrário.
Para expor as propriedades da Unidade de Extensão a um aplicativo, você pode escrever uma DLL de plug-in de modo de usuário que exponha uma API COM. Você pode implementar essa API fazendo solicitações para a propriedade KS definida usando a interface IKsControl . Vidcap.ax carrega automaticamente o plug-in de interface do nó com base em determinadas entradas do Registro. Um aplicativo pode acessar a interface usando IKsTopologyInfo::CreateNodeInstance seguido por uma chamada para QueryInterface no objeto de nó para obter a API COM necessária.
Os seguintes elementos são necessários para escrever e usar um plug-in de Unidade de Extensão:
Um cabeçalho e arquivo cpp implementando a API da Unidade de Extensão e uma interface chamada IKsNodeControl. Vidcap.ax usa a interface de IKsNodeControl para informar o plug-in sobre o identificador do nó de extensão e fornecer-lhe uma instância de IKsControl. Código de exemplo para esses arquivos pode ser encontrado em Sample Extension Unit Plug-in DLL.
Um ficheiro .rgs que regista as interfaces de nó e IDs de classe (CLSIDs) na subchave do Registo HKLM\System\CCS\Control\NodeInterfaces\Property_Set_GUID. As entradas nesta subchave do registo contêm os valores binários para o ID de interface (IID) e CLSID. Para obter mais informações, consulte Entrada de registro de exemplo para unidades de extensão UVC.
Um aplicativo que invoca essa interface. A aplicação primeiro cria uma instância de nó com o ID de nó correto utilizando IKsTopologyInfo::CreateNodeInstance. Em seguida, o aplicativo chama QueryInterface na instância do nó para obter a interface de Unidade de Extensão necessária. Para obter mais informações, consulte Aplicativo de exemplo para unidades de extensão UVC e Suporte a eventos de atualização automática com unidades de extensão
Os exemplos de código nesta seção ilustram todos esses elementos. Consulte Criando o controle de exemplo da unidade de extensão para saber como criar o plug-in de exemplo e o código de aplicativo de exemplo associado.
Depois de a DLL do plug-in ser registada e as entradas do registo descritas acima serem fornecidas, o Vidcap.ax carrega automaticamente as interfaces de nó relevantes quando a instância do nó é criada.
Observação A partir do Windows XP SP2, o conjunto de propriedades Unidade de Extensão é suportado apenas no nó e não no filtro.
Considerações sobre o Registro
Para registrar o IID e o CLSID da interface exportada pelo plug-in, você pode usar o registro DLL ou um arquivo de informações de configuração específicas do dispositivo (INF).
Consulte Entrada de Registro de Exemplo para Unidades de Extensão UVC para obter um arquivo .rgs de exemplo que mostra os valores necessários para as entradas do Registro. Este tópico também demonstra como escrever um arquivo INF específico do dispositivo para instalar um dispositivo de vídeo USB e registrar a DLL do plug-in. Você pode escolher o registro DLL ou um arquivo INF específico do dispositivo, com base em suas necessidades específicas.
Esquema
O diagrama esquemático a seguir mostra as relações entre os vários módulos envolvidos na escrita e no uso de um plug-in de Unidade de Extensão. Em particular, ele rastreia a conexão do aplicativo, para a DLL plug-in, até o driver e, finalmente, para a unidade de extensão no próprio dispositivo. O esquema também ilustra os vários GUIDs envolvidos; Valores idênticos são realçados pelo uso de uma cor correspondente.
Mecanismos de Eventos
A classe de vídeo USB suporta eventos de atualização automática, onde o dispositivo notifica o driver do host sobre alterações em qualquer um de seus controles. O driver Microsoft USB Video Class suporta esse conceito, permitindo que os aplicativos se registrem para eventos de atualização automática. O processo de obtenção de atualizações envolve três etapas:
Registrando-se para eventos de atualização usando KSEVENTSETID_VIDCAPNotify::KSEVENT_VIDCAP_AUTO_UPDATE
A escuta de eventos no identificador de eventos de notificação
Cancelar a notificação quando terminar