Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O driver da Classe de Vídeo USB expõe Unidades de Extensão como nós no filtro proxy de vídeo KS USB. Os controles da Unidade de Extensão são expostos ainda mais 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 de Unidade de Extensão.
Os controles individuais da Unidade de Extensão devem ser numerados continuamente de 1 para algum valor máximo n. Esses controles são mapeados diretamente para IDs (identificadores de propriedade) no conjunto de propriedades da Unidade de Extensão e podem ser acessados usando solicitações KSPROPERTY padrão por meio de IKsControl.
Em resposta a solicitações de propriedade de aplicativos, 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 dá suporte a 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 no modo de usuário que expõe 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 da interface de nó com base em determinadas entradas do Registro. Um aplicativo pode acessar a interface usando IKsTopologyInfo::CreateNodeInstance seguido de uma chamada para QueryInterface no objeto do nó para obter a API COM necessária.
Os seguintes elementos são necessários para gravar e usar um plug-in da Unidade de Extensão:
Um cabeçalho e um arquivo cpp implementando a API de Unidade de Extensão e uma interface chamada IKsNodeControl. Vidcap.ax usa a interface IKsNodeControl para informar o plug-in sobre o identificador do nó de extensão e fornece a ele uma instância de IKsControl. O exemplo de código desses arquivos pode ser encontrado na DLL do Plug-in de Unidade de Extensão de Exemplo.
Um arquivo .rgs que registra as interfaces de nó e as IDs de Classe (CLSIDs) na subchave do Registro HKLM\System\CCS\Control\NodeInterfaces\Property_Set_GUID. As entradas nesta subchave do Registro contêm os valores binários para a ID da Interface (IID) e CLSID. Para obter mais informações, consulte Exemplo de Entrada de Registro para Unidades de Extensão UVC.
Um aplicativo que invoca essa interface. O aplicativo primeiro cria uma instância de nó com a correta ID do nó ao usar 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 Exemplo de Aplicativo 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 Como construir 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 que a DLL do plug-in é registrada e as entradas do Registro descritas acima são fornecidas, o Vidcap.ax carrega automaticamente as interfaces de nó relevantes quando a instância do nó é criada.
Nota A partir do Windows XP SP2, o conjunto de propriedades da Unidade de Extensão tem suporte 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 INF (informações de instalação específicas do dispositivo).
Veja Entrada de Registro de Exemplo para Unidades de Extensão UVC para um arquivo de exemplo .rgs que mostra os valores necessários para as entradas do Registro. Este tópico também demonstra como gravar 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 um registro DLL ou um arquivo INF específico do dispositivo, com base em suas necessidades específicas.
Esquema
O diagrama a seguir mostra as relações entre os vários módulos envolvidos na escrita e utilização de um plug-in de Unidade de Extensão. Em particular, ele rastreia a conexão do aplicativo, até a DLL do plug-in, até o driver e, por fim, até 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 evento
A Classe de Vídeo USB dá suporte a eventos de atualização automática, em que o dispositivo notifica o driver de host de alterações em qualquer um de seus controles. O driver da Classe de Vídeo USB da Microsoft dá suporte a 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
Escutando eventos no identificador de evento de notificação
Cancelando a notificação quando terminar