Interfaces UMDF 1.x específicas para USB

Aviso

O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando o UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2.

Os exemplos de UMDF 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de Exemplos de Driver de maio de 2022.

Para obter mais informações, consulte Introdução ao UMDF.

Um dispositivo USB pode ter uma ou mais configurações. Cada configuração pode ter uma ou mais interfaces. Cada interface está associada a uma ou mais configurações alternativas, e cada configuração alternativa define um ou mais pontos de extremidade. Um ponto de extremidade representa um buffer no hardware do dispositivo.

Um pipe é uma abstração de software de uma conexão entre o controlador de host e um ponto de extremidade na configuração alternativa atual. Um pipe pode ser um destino para E/S e é exposto no UMDF pela interface IWDFUsbTargetPipe .

As interfaces UMDF específicas do USB são criadas com base na arquitetura WinUSB . Por design, o WinUSB permite acesso apenas à primeira configuração de um dispositivo de configuração múltipla. Portanto, a interface WinUSB não expõe a capacidade de enviar uma solicitação de configuração de seleção. Consequentemente, a funcionalidade de destino de E/S no UMDF não dá suporte à seleção de nenhuma configuração de dispositivo diferente da primeira.

As interfaces UMDF específicas do USB têm uma hierarquia de objetos semelhante à do modelo USB geral. Um driver UMDF cria um objeto de dispositivo de destino, que é exposto pela interface IWDFUsbTargetDevice . Em seguida, o driver pode usar métodos de IWDFUsbTargetDevice para acessar interfaces USB, que são expostas por instâncias de IWDFUsbInterface. O driver pode chamar métodos IWDFUsbInterface para manipular configurações e pontos de extremidade.

A tabela a seguir mostra a hierarquia de interface UMDF específica do USB:

Interface UMDF específica para USB Derivado de
IWDFUsbTargetDevice IWDFIoTarget
Interface IWDFUsbInterface IWDFObject
IWDFUsbTargetPipe IWDFIoTarget

As interfaces IWDFUsbTargetDevice e IWDFUsbTargetPipe derivam da interface IWDFIoTarget e, portanto, expõem objetos de destino de E/S. A interface IWDFUsbInterface não deriva de IWDFIoTarget (IWDFUsbInterface deriva da interface IWDFObject ) e, portanto, não expõe um objeto de destino de E/S. Qualquer E/S enviada para descobrir e manipular detalhes da interface é enviada para o dispositivo de destino.

Para obter instruções passo a passo sobre como escrever um driver de cliente USB baseado em UMDF simples, consulte Como escrever seu primeiro driver de cliente USB (UMDF).

Para saber mais sobre o código-fonte necessário para um driver de cliente USB baseado em UMDF, consulte Noções básicas sobre a estrutura de código do driver de cliente USB (UMDF).