Visão geral da enumeração de coleções de interfaces em dispositivos compostos USB

As interfaces em um dispositivo USB composto podem ser agrupadas em coleções. O driver pai genérico USB (Usbccgp.sys) pode enumerar coleções de interfaces de quatro maneiras.

Esses quatro métodos de enumeração de coleções de interface são organizados hierarquicamente da seguinte maneira:

  1. Rotinas de retorno de chamada fornecidas pelo fornecedor

    Se o fornecedor tiver registrado uma rotina de retorno de chamada com o Driver Pai Genérico USB (Usbccgp.sys), o driver pai genérico dará precedência à rotina de retorno de chamada e permitirá que a rotina de retorno de chamada agrupe interfaces em vez de usar algum outro método. Para obter mais informações sobre a enumeração da coleção de interfaces usando rotinas de retorno de chamada fornecidas pelo fornecedor, consulte Enumeração de coleções de interfaces em dispositivos compostos USB.

  2. União de descritores funcionais

    . Se o fornecedor tiver habilitado a enumeração CDC e WMCDC no driver pai genérico USB, o driver pai genérico usará UFDs (descritores funcionais de união ) para agrupar interfaces em coleções. Quando habilitado, esse método tem precedência sobre todos os outros métodos, exceto para rotinas de retorno de chamada fornecidas pelo fornecedor.

  3. Descritores de associação de interface

    Se os IADs (descritores de associação de interface ) estiverem presentes, o driver pai genérico USB sempre agrupará interfaces usando IADs em vez de usar métodos herdados. A Microsoft recomenda que os fornecedores usem IADs para definir coleções de interfaces.

  4. Método de áudio herdado

    O driver pai genérico USB é capaz de enumerar coleções de interfaces usando técnicas herdadas reservadas para funções de áudio. O driver pai genérico não usará esse método se houver IADs no dispositivo.

Personalizando a enumeração de coleções de interfaces para dispositivos compostos

Alguns dispositivos USB têm coleções de interfaces que o Descritor de Associação de Interface USB (IAD) não pode descrever. No Windows Vista e em sistemas operacionais posteriores, os fornecedores podem personalizar a maneira como o Driver Pai Genérico USB (Usbccgp.sys) define e enumera as coleções de interface de um dispositivo. Isso é feito por meio de uma rotina de retorno de chamada de enumeração em um driver de filtro. A rotina de retorno de chamada auxilia o driver pai genérico na definição de coleções de interfaces personalizadas para o dispositivo.

Para que o driver pai genérico defina coleções de interfaces personalizadas, o fornecedor do dispositivo composto deve:

  1. Implemente a rotina de retorno de chamada de enumeração (USBC_START_DEVICE_CALLBACK).
  2. Forneça um ponteiro para a rotina de retorno de chamada na interface de configuração do dispositivo USB (membro StartDeviceCallback do USBC_DEVICE_CONFIGURATION_INTERFACE_V1).
  3. Forneça um arquivo INF que corresponda à ID do dispositivo composto e carregue explicitamente o driver pai genérico USB e o driver de filtro.

Considerações sobre a implementação

O driver de filtro que contém a rotina de retorno de chamada de enumeração pode ser um driver de filtro superior ou inferior. Quando o driver pai genérico USB recebe uma solicitação IRP_MN_START_DEVICE para iniciar um dispositivo composto, ele consulta a interface de configuração do dispositivo USB enviando uma solicitação IRP_MN_QUERY_INTERFACE para a parte superior da pilha de driver.

Ao receber uma solicitação de IRP_MN_QUERY_INTERFACE, o driver de filtro deve marcar o tipo GUID no membro InterfaceType da solicitação para verificar se a interface solicitada é do tipo USB_BUS_INTERFACE_USBC_CONFIGURATION_GUID. Se for, o driver de filtro retornará um ponteiro para a interface no membro Interface do IRP.

A rotina de retorno de chamada de enumeração deve retornar um ponteiro para uma matriz de descritores de função (USBC_FUNCTION_DESCRIPTOR) que descrevem as coleções de interface. Cada descritor de função contém uma matriz de descritores de interface (USB_INTERFACE_DESCRIPTOR) que descrevem a coleção de interfaces. A rotina de retorno de chamada deve alocar os descritores de função e os descritores de interface do pool não paginado. O driver pai genérico libera essa memória. A rotina de retorno de chamada deve garantir que o membro NumberOfInterfaces de cada USB_INTERFACE_DESCRIPTOR relata com precisão o número de interfaces na coleção de interfaces.

O driver pai genérico cria um PDO (objeto de dispositivo físico) para cada descritor de função.

A interface de configuração do dispositivo USB e a rotina de retorno de chamada de enumeração são resumidas em Rotinas de Driver Pai Genérico.

Mecanismo de carregamento de driver pai genérico USB

Quando um dispositivo composto atende aos requisitos descritos em Enumeração de Dispositivos Compostos USB, o sistema operacional gera uma ID compatível de USB\COMPOSITE para indicar que o dispositivo é composto. A ID compatível produz uma correspondência em Usb.inf e o sistema operacional carrega o driver pai genérico USB, automaticamente, sem a ajuda de um arquivo INF fornecido pelo fornecedor.

No entanto, esse mecanismo padrão não funciona para dispositivos compostos que exigem enumeração personalizada de coleções de interface, porque no mecanismo padrão o sistema não carrega o driver de filtro fornecido pelo fornecedor necessário. Para que o mecanismo de rotina de retorno de chamada de enumeração funcione, o driver de filtro que expõe a interface de configuração do dispositivo USB já deve ser carregado quando o pai genérico USB enumera as coleções de interface do dispositivo composto. Isso exige que o fornecedor do dispositivo composto instale um arquivo INF que corresponda à ID do dispositivo composto e carregue explicitamente o driver pai genérico USB e o driver de filtro.

Suporte para a classe de dispositivo de comunicação móvel sem fio

No Windows Vista, o Driver Pai Genérico USB (Usbccgp.sys) fornece suporte para dispositivos incluídos na Classe de Dispositivo de Comunicação USB (Barramento Serial Universal) e na Classe de Dispositivo de Comunicação Móvel Sem Fio USB (WMCDC).

A especificação WMCDC (Classe de Dispositivo de Comunicação Móvel Sem Fio USB) estabelece um padrão para conexão, controle e troca de conteúdo entre um host e um dispositivo móvel sem fio (por exemplo, um telefone celular) quando o dispositivo está conectado a uma porta USB. O WMCDC é uma extensão da classe de dispositivo de comunicação (CDC), que inclui uma ampla gama de dispositivos de comunicação e rede. Esta seção descreve a arquitetura que dá suporte a dispositivos CDC e WMCDC em sistemas operacionais Windows.

Os dispositivos WMCDC consistem em várias funções agrupadas em aparelhos lógicos. A maioria dos dispositivos WMCDC tem um único aparelho lógico, mas um dispositivo pode ter vários aparelhos lógicos. Os aparelhos lógicos normalmente incluem funções como um modem de dados/fax, um repositório de objetos e uma instalação de controle de chamada. Um aparelho lógico também pode incluir funções de suporte definidas por outras especificações USB, como a especificação da Classe de Áudio USB, a especificação de classe HID (Dispositivo de Entrada Humana USB) e a especificação da Classe de Vídeo USB.

A arquitetura WMCDC do Windows usa drivers nativos do Windows para gerenciar as funções do seu dispositivo WMCDC. Por exemplo, você pode usar o subsistema TAPI (interface do programa de aplicativo de telefonia do Windows) para gerenciar as funções de modem de voz e dados/fax do seu dispositivo e o subsistema NDIS (especificação de interface de driver de rede) do Windows para gerenciar a função Ethernet LAN do dispositivo. Além disso, você pode gerenciar algumas funções, como uma função OBEX (Object Exchange Protocol), no software de modo de usuário com a assistência do WinUSB (Winusb.sys).

Esta imagem mostra um exemplo de pilha de driver para um dispositivo WMCDC.

Diagrama de uma configuração de dispositivo de exemplo e pilha de driver.

Na figura anterior, o dispositivo WMCDC contém um único aparelho lógico: uma função OBEX e uma função modem. Um arquivo INF fornecido pelo fornecedor carrega drivers nativos do Windows para gerenciar o modem. A função OBEX é gerenciada por um driver de modo de usuário fornecido pelo fornecedor que é executado no UMDF ( User-Mode Driver Framework ). O driver de modo de usuário usa o protocolo WPD (Dispositivos Portáteis do Windows) para se comunicar com aplicativos de usuário e a interface que o WinUSB exporta para se comunicar com a pilha USB. Em geral, um arquivo INF fornecido pelo fornecedor carregará uma instância separada de Winusb.sys para cada coleção de interfaces que usa Winusb.sys.

Configurações do Registro

A pilha USB não dá suporte automaticamente ao WMCDC. Você deve fornecer um arquivo INF que carrega uma instância de Usbccgp.sys. O arquivo INF deve conter uma seção AddReg que define o valor do Registro EnumeratorClass na chave de software associada a Usbccgp.sys a um valor REG_BINARY construído a partir de três números: 0x02, 0x00 e 0x 00. O exemplo de código a seguir de um arquivo INF de exemplo ilustra como definir EnumeratorClass como o valor apropriado.

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass, 0x00000001,02,00,00

O valor que você deve atribuir a EnumeratorClass é construído a partir de três valores binários de 1 byte representados no arquivo INF por pares de dígitos hexadecimal: 02, 00 e 00. Esses três números correspondem aos valores que o Fórum de Implementadores USB atribuiu à classe de dispositivo CDC, à subclasse do dispositivo CDC e ao protocolo de dispositivo CDC, respectivamente.

Os tópicos a seguir descrevem ainda mais o WMCDC:

Enumerando coleções de interfaces no WMCDC

A classe de dispositivo móvel sem fio USB (WMCDC) é uma subclasse da classe de dispositivo de comunicações USB (CDC). A especificação WMCDC se estende, mas não altera substancialmente as diretrizes cdc para definir coleções de interfaces. Em particular, os dispositivos WMCDC devem estar em conformidade com as diretrizes cdc para definir coleções de interfaces.

As coleções de interface CDC contêm uma interface de master (USB_INTERFACE_DESCRIPTOR) que pertence à classe de interface de comunicação (bInterfaceClass = 0x02) ou à classe de interface de dados (bInterfaceClass = 0x0A). Se a interface master pertencer à classe de interface de comunicação (que é a situação típica), a subclasse da interface master (bInterfaceSubClass) especificará um modelo de controle CDC. O modelo de controle indica o tipo de interfaces incluídas na coleção de interfaces. Para obter uma descrição dos modelos de controle definidos pelo Fórum de Implementadores USB, consulte a especificação CDC e a especificação WMCDC.

A interface master de uma coleção de interfaces é seguida por um conjunto de descritores funcionais obrigatórios específicos da classe, incluindo um UFD (union functional descriptor). A UFD lista os números das interfaces que pertencem à coleção. O campo bMasterInterface da UFD contém o número da interface master. Zero ou mais campos bSubordinateInterface contêm os números das outras interfaces (subordinadas) na coleção.

Para a maioria dos tipos de modelos de controle, o Driver Pai Genérico USB (Usbccgp.sys) cria um PDO (objeto de dispositivo físico) para cada UFD. Mas alguns modelos de controle incluem uma interface de áudio à qual o driver pai genérico enumera separadamente da coleção de interface à qual a interface de áudio pertence. A interface de áudio aparece na lista de interfaces subordinadas (bSubordinateInterface) na UFD da coleção de interfaces, mas o driver pai genérico cria um PDO separado para a interface de áudio. Tanto o PDO para a interface de áudio quanto o PDO para a coleção de interface à qual a interface de áudio pertence estão diretamente acima do FDO (objeto de dispositivo funcional) do dispositivo composto pai na árvore de objetos do dispositivo. O PDO da interface de áudio não é um filho da coleção de interfaces.

Há dois modelos de controle cujas características de enumeração são configuráveis no registro: o modelo de controle de aparelho sem fio (WHCM), que define um aparelho lógico, e o modelo de controle OBEX (Object Exchange Protocol). Para configurar as características de enumeração desses dois modelos de controle, você deve fornecer um arquivo INF que carrega uma instância de Usbccgp.sys e define o valor de CdcFlags na chave de software para essa instância do Usbccgp.sys. A tabela a seguir descreve as opções de configuração de CdcFlags.

Bit CdcFlags Bit definido como 0 Bit definido como 1
0 (máscara = 0x00000001) O driver pai genérico USB cria um PDO separado para cada interface OBEX. O driver pai genérico USB cria um único PDO para todas as interfaces OBEX.
1 (máscara = 0x00000010) O driver pai genérico USB não cria PDOs para interfaces WHCM (aparelhos lógicos). Essas interfaces permanecem ocultas da perspectiva da árvore de objetos do dispositivo. O driver pai genérico USB cria um PDO para cada interface WHCM.

Por exemplo, para limpar os dois bits (defina-os como 0), o arquivo INF deve ter a seguinte linha em uma seção DDInstall.AddReg .

HKR, , CdcFlags, 0x00010001, 0x00000000

Para definir ambos os bits como 1, o arquivo INF deve ter a linha a seguir.

HKR, , CdcFlags, 0x00010001, 0x00000011

Para definir o bit 0 como 1 e o bit 1 como 0, o arquivo INF deve ter a linha a seguir.

HKR, , CdcFlags, 0x00010001, 0x00000001

Qualquer bit pode ser definido ou redefinido, independentemente do outro bit.

Os números a seguir ilustram como diferentes configurações do Registro podem criar árvores de dispositivo diferentes para o mesmo dispositivo.

A figura a seguir ilustra a configuração do PDO quando o bit 0 e o bit 1 de CdcFlags são 0.

Diagrama ilustrando uma coleção de interfaces para mapeamento de objeto de dispositivo para CdcFlags = 0x00000000.

A coleção de interfaces WHCM (modelo de controle de aparelho sem fio) na figura anterior contém três coleções de interface subordinada (bSubordinateInterface): duas coleções OBEX e uma coleção modem. O bit 0 do CdcFlags é 0, portanto, o driver pai genérico USB não cria um PDO para a coleção de interfaces WHCM. O bit 1 do CdcFlags é 0, portanto, o driver pai genérico USB gera um PDO separado para cada coleção de interface OBEX.

A figura a seguir ilustra a configuração do PDO quando o bit 0 e o bit 1 de CdcFlags são definidos .

Diagrama ilustrando uma coleção de interfaces para mapeamento de objeto de dispositivo para CdcFlags = 0x00010001.

Como o bit 0 de CdcFlags está definido como 1, o driver pai genérico USB cria um PDO para a coleção de interfaces WHCM. Como o bit 1 de CdcFlags é definido como 1, o driver pai genérico USB agrupa as duas coleções OBEX e gera um único PDO para ambas as coleções OBEX.

Talvez você queira representar coleções OBEX com um único PDO no nível do kernel e distinguir entre cada coleção OBEX individual em um driver de modo de usuário. O protocolo WPD (Dispositivos Portáteis do Windows) pode ajudá-lo a múltiplos fluxos de dados entre diferentes funções OBEX no nível do usuário, quando todas as funções OBEX são agrupadas em um único PDO no nível do kernel.

O arquivo INF de exemplo a seguir carrega o driver pai genérico USB para gerenciar um dispositivo WMCDC e instrui o pai genérico USB a criar PDOs para aparelhos lógicos e criar um único PDO para todas as coleções OBEX no aparelho lógico.

[Version]
Signature="$Windows NT$"
Class=USB
ClassGUID={36FC9E60-C465-11CF-8056-444553540000}
Provider=%MSFT%
DriverVer=07/01/2001,5.1.2600.0
CatalogFile=ExampleCatalog.cat
PnpLockdown=1

[ControlFlags]
ExcludeFromSelect=*

[Manufacturer]
CompanyName=CompanyName,NTamd64

[CompanyName.NTamd64]
%COMPANYNAME.DeviceDesc%=CCGPDriverInstall,USB\Vid_????&Pid_????

[CCGPDriverInstall.NT]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg=CCGPDriverInstall.AddReg

[CCGPDriverInstall.NT.Services]
Include=usb.inf
Needs=Composite.Dev.NT.Services

[CCGPDriverInstall.AddReg]
HKR,,EnumeratorClass,0x00000001,02,00,00
HKR,,CdcFlags,0x00010001,0x00010001

[Strings]
MSFT="Microsoft"
COMPANYNAME.DeviceDesc="USB Phone Parent"

Manipulando coleções de interface CDC e WMCDC

O driver pai genérico USB lida com interfaces WHCM (modelo de controle de aparelho sem fio) de maneira especial.

A lista a seguir resume as maneiras mais importantes pelas quais a manipulação de coleções de interface CDC e WMCDC difere da de outras coleções de interface:

  • A classe de dispositivo de comunicação móvel sem fio permite uma quantidade limitada de aninhamento de coleções de interfaces. Em particular, uma coleção de interface de aparelho lógico (ou seja, uma coleção de interfaces WHCM) pode conter outras coleções de interface subordinada. Por exemplo, um telefone compatível com WMCDC pode ter uma coleção de interfaces WHCM, que, por sua vez, contém uma coleção de modelos de controle abstrata e uma coleção OBEX.
  • Você pode configurar o driver pai genérico USB para não enumerar coleções de interface WHCM. As coleções de interface do WHCM que não são enumeradas permanecem ocultas, mas o driver pai genérico usa informações dos UFDs (descritores de função união) que pertencem a uma coleção de interfaces WHCM para agrupar e enumerar coleções de interface subordinada.
  • Você pode configurar o driver pai genérico USB para criar PDOs (objetos de dispositivo físico) separados para coleções de interface do modelo de controle OBEX ou para criar um único PDO para todas as coleções de interface do modelo de controle OBEX.
  • A lista de números de interface em uma UFD pode ter lacunas. Ou seja, os números de interface de um UFD podem se referir a interfaces que não são contíguas. Esse tipo de numeração não é válido, por exemplo, para o Descritor de Associação de Interface USB (IAD), cujas interfaces devem ser contíguas e ter números sequenciais.
  • UFDs podem incluir coleções de interface de áudio relacionadas
  • IDs (identificadores de hardware) para coleções de interface CDC e WMCDC devem incluir a subclasse de interface. Outras interfaces USB, cujas IDs de hardware contêm um sufixo MI_%02X que especifica o número da interface, não contêm informações sobre a subclasse da interface. As informações de subclasse são incluídas na ID de hardware para permitir que os fornecedores forneçam aos arquivos INF correspondências de ID de hardware para coleções de interface específicas, em vez de depender da posição da interface no layout do descritor para determinar qual driver carregar para a coleção. As informações de subclasse na ID de hardware também permitem um caminho de migração gradual de drivers fornecidos pelo fornecedor atual que gerenciam coleções de interface WMCDC para alternativas, como drivers de modo de usuário. Para obter uma discussão geral sobre como as IDs de hardware da interface USB são formatadas, consulte Identificadores para dispositivos USB.

Modelos de controle CDC e WMCDC

A seção Modelos de Controle CDC e WMCDC descreve as propriedades de coleções de interface com suporte em sistemas operacionais Microsoft Windows. Cada descrição inclui, entre outras coisas, uma lista de IDs (identificadores de hardware e dispositivo) que o driver pai genérico USB gera para a coleção de interfaces.

A maioria das coleções de interfaces compatíveis com o Windows correspondem a modelos de controle que pertencem à classe de dispositivo de comunicação (CDC) e à classe de dispositivo de comunicação móvel sem fio (WMCDC), mas o sistema operacional também dá suporte a coleções herdadas de interface de áudio e vídeo e uma coleção de interfaces que o MCPC (Mobile Computing Promotion Consortium) define.

As coleções de interface descritas nesta seção são as seguintes:

Interfaces de classe de áudio

Coleções de interface de classe de dispositivo de áudio USB que ocorrem em dispositivos CDC e WMCDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definição de classe de dispositivo de barramento serial universal para dispositivos de áudio, versão 1.0.
Classe Todas as interfaces na coleção de interfaces devem pertencer à Classe de Dispositivo de Áudio (0x01).
Subclasse Cada interface na coleção de interfaces deve ter uma subclasse diferente da primeira interface da coleção.
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Zero ou mais interfaces contíguas que pertencem à subclasse de streaming (0x02).
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x

As IDs de hardware para coleções de interface de áudio não contêm informações específicas da classe de interface.
IDs compatíveis USB\Class_01&SubClass_01&Prot_00
USB\Class_01&SubClass_01
USB\Class_01

O formato de IDs compatíveis para coleções de interface de áudio contém informações inseridas sobre a classe de interface, a subclasse de interface e o protocolo. Para coleções de interface de áudio em um dispositivo CDC ou WMCDC, a classe de interface é 01, a subclasse é 01 e o protocolo é 00.

Modelo de controle abstrato CDC

Há duas versões do ACM (Modelo de Controle Abstrato). A versão original é definida na especificação CDC (Classe de Dispositivo de Comunicação USB ). A especificação da Classe de Dispositivo de Comunicação Móvel Sem Fio USB (WMCDC) contém uma definição estendida do ACM.

Coleções de interfaces que estão em conformidade com a especificação WMCDC são descritas nesta página.

As coleções de interfaces que estão em conformidade com a especificação CDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.6.2.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master ACM (0x02).
Protocolo Qualquer um.
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados e interfaces de classe de áudio opcionais que o UFD (descritor funcional de união) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_02
USB\Vid_%04x&Pid_%04x&Cdc_02&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_02
IDs compatíveis USB\Class_02&SubClass_02&Prot_%02X
USB\Class_02&SubClass_02
USB\Class_02
Tratamento especial A UFD pode referenciar uma coleção de interface de áudio que é enumerada independentemente da coleção de interfaces do ACM.

Modelo de controle de rede de caixa eletrônico CDC

As coleções de interfaces ANCM (Modelo de Controle de Rede) do ATM CDC USB têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.8.3
Classe da interface master Classe de interface de comunicação (0x02)
Subclasse da interface master ANCM (0x07)
Protocolo Nenhum (0x00)
Enumerated Yes
Interfaces relacionadas Uma interface de classe de dados referenciada pelo UFD (Union Functional Descriptor)
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_07
USB\Vid_%04x&Pid_%04x&Cdc_07&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_07
IDs compatíveis USB\Class_02&SubClass_07&Prot_00
USB\Class_02&SubClass_07
USB\Class_02
Tratamento especial Nenhum

Modelo de controle CDC CAPI

As coleções de interfaces de modelo de controle CAPI (Common ISDN API) DE CDC USB têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.7.2
Classe da interface master Classe de interface de comunicação (0x02)
Subclasse da interface master CAPI (0x05)
Protocolo Nenhum (0x00)
Enumerated Yes
Interfaces relacionadas Uma interface de classe de dados que o UFD (union functional descriptor) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_05
IDs compatíveis USB\Class_02&SubClass_05&Prot_00
USB\Class_02&SubClass_05
Tratamento especial Nenhum

Modelo de controle de linha direta CDC

As coleções de interface DLCM (modelo de controle de linha direta) USB CDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.6.1.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master DLCM (0x01).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Classe de áudio ou interfaces definidas pelo fornecedor que o UFD (union functional descriptor) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_01
USB\Vid_%04x&Pid_%04x&Cdc_01&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_01
IDs compatíveis USB\Class_02&SubClass_01&Prot_00
USB\Class_02&SubClass_01``USB\Class_02
Tratamento especial O UFD faz referência a uma coleção de interfaces de classe de áudio que é enumerada independentemente da coleção de interface DLCM.

Modelo de controle de rede CDC Ethernet

As coleções de interfaces ENCM (modelo de controle de rede) Ethernet USB CDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.8.2.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master ENCM (0x06).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o UFD (union functional descriptor) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_06
USB\Vid_%04x&Pid_%04x&Cdc_06&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_06
IDs compatíveis USB\Class_02&SubClass_06&Prot_00
USB\Class_02&SubClass_06
USB\Class_02
Tratamento especial As IDs compatíveis desse modelo de controle têm uma correspondência em um arquivo INF fornecido pela Microsoft. Se o sistema operacional não encontrar uma correspondência para uma das IDs de hardware em um arquivo INF fornecido pelo fornecedor, o sistema carregará automaticamente o driver de miniporto NDIS nativo para gerenciar a coleção de interfaces.

Modelo de controle ISDN de vários canais CDC

Coleções de interfaces MCCM (modelo de controle ISDN de vários canais) USB CDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.7.1
Classe da interface master Classe de interface de comunicação (0x02)
Subclasse da interface master MCCM (0x04)
Protocolo Nenhum (0x00)
Enumerated Yes
Interfaces relacionadas Várias interfaces de classe de dados que o UFD (union functional descriptor) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_04
USB\Vid_%04x&Pid_%04x&Cdc_04&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_04
IDs compatíveis USB\Class_02&SubClass_04&Prot_00
USB\Class_02&SubClass_04
USB\Class_02
Tratamento especial Nenhum

Modelo de controle telefônico CDC

As coleções de interfaces do modelo de controle telefônico USB CDC (TCM) têm as propriedades a seguir.

Propriedade Descrição
Referência Definições de classe de barramento serial universal para dispositivos de comunicação, versão 1.1, Seção 3.6.3.
Classe da interface master Classe de interface de comunicação (0x02).
SubClasse da interface master TCM (0x03).
Protocolo Qualquer um.
Enumerated Sim.
Interfaces relacionadas Interfaces de classe de áudio que o UFD (descritor funcional de união) faz referência.
ID de hardware USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_03
USB\Vid_%04x&Pid_%04x&Cdc_03&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_03
ID compatível USB\Class_02&SubClass_03&Prot_%02X
USB\Class_02&SubClass_03
USB\Class_02
Tratamento especial A UFD pode referenciar uma coleção de interface de classe de áudio que é enumerada independentemente da coleção de interfaces TCM.

Interfaces exclusivas do fornecedor mcpc

O MCPC (Mobile Computing Promotion Consortium) definiu um formato para coleções de interface antes da especificação WMCDC (Wireless Mobile Communication Device Class) fornecer um formato para dispositivos CDC exclusivos do fornecedor. Portanto, as coleções de interface MCPC não estão em conformidade com o padrão WMCDC.

No entanto, o driver pai genérico USB poderá enumerar coleções de interface MCPC se o WMCDC estiver habilitado. As coleções de interface MCPC têm as propriedades a seguir.

Propriedade Descrição
Referência Especificação gl-004 do MCPC (Mobile Computing Promotion Consortium)
Classe CDC (0x02)
Subclasse 0x88
Protocolo Nenhum (0x00)
Enumerated Yes
Interfaces relacionadas Zero ou mais interfaces de classe de dados que o UFD (descritor funcional de união) referencia
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_88
USB\Vid_%04x&Pid_%04x&Cdc_88&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_88
IDs compatíveis USB\Class_02&SubClass_88&Prot_00
USB\Class_02&SubClass_88
USB\Class_02
Tratamento especial Nenhum

Interfaces de classe de vídeo

Coleções de interface de classe de dispositivo de vídeo USB que ocorrem em dispositivos CDC e WMCDC têm as propriedades a seguir.

Propriedade Descrição
Referência Definição de classe de dispositivo de barramento serial universal para dispositivos de vídeo, versão 1.0.
Classe Vídeo (0x0E).
Subclasse Controle de vídeo (0x01).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Zero ou mais interfaces contíguas que pertencem à subclasse de streaming (0x02).
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&MI_%02x
USB\Vid_%04x&Pid_%04x&MI_%02x
IDs compatíveis USB\Class_0E&SubClass_01&Prot_00
USB\Class_0E&SubClass_01
USB\Class_0E
Tratamento especial As coleções de interface de classe de vídeo recebem tratamento especial em dispositivos CDC. Em dispositivos não CDC, as coleções de interface de classe de vídeo são definidas por IADs (descritores de associação de interface). Em dispositivos CDC, as coleções de interface de classe de vídeo são definidas por UFDs (descritores funcionais de união).

Modelo de controle abstrato WMCDC

Há duas versões do modelo de controle abstrato (ACM). A versão original é definida na especificação CDC (Classe de Dispositivo de Comunicação USB). A especificação da Classe de Dispositivo de Comunicação Móvel Sem Fio USB (WMCDC) contém uma definição estendida do ACM. Coleções ACM que contêm uma função fax/modem devem usar a definição WMCDC de ACM em vez da definição original do CDC ACM.

Coleções de interfaces que estão em conformidade com a especificação CDC são descritas nesta página.

As coleções de interface que estão em conformidade com a especificação WMCDC têm as propriedades a seguir.

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.2.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master ACM (0x02).
Protocolo Se a coleção usar um Protocolo de Conjunto de Comandos AT, o valor do protocolo inserido nas IDs compatíveis será 0x01. Se a coleção usar um dos protocolos descritos pela especificação WMCDC, o valor do protocolo inserido nas IDs compatíveis será 0x2 por meio de 0x06 ou 0xFE.
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o UFD (descritor funcional de união) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_Modem
USB\Vid_%04x&Pid_%04x&Cdc_Modem&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_Modem
IDs compatíveis USB\Class_02&SubClass_Modem&Prot_%02X
USB\Class_02&SubClass_Modem
USB\Class_02
Tratamento especial A UFD pode fazer referência a uma coleção de interface de áudio que é enumerada independentemente da coleção de interfaces do ACM.

As coleções de interface devem estar em conformidade com os requisitos especiais de descritor e ponto de extremidade especificados na seção 6.2 da especificação WMCDC. Se a coleção de interfaces não estiver em conformidade com os requisitos do WMCDC, mas a interface estiver em conformidade com os requisitos de CDC, o driver pai genérico USB enumerará a coleção de interfaces e as IDs de hardware genéricas com formatos CDC.

As IDs compatíveis desse modelo de controle têm uma correspondência em um arquivo INF fornecido pela Microsoft. Se o sistema operacional não encontrar uma correspondência para uma das IDs de hardware em um arquivo INF fornecido pelo fornecedor, o sistema carregará automaticamente o driver de filtro de modem TAPI (interface de programação de aplicativo de telefonia nativa) para gerenciar a função modem e definir as configurações apropriadas do Registro TAPI, a menos que o código de protocolo seja 0xFE. Se o código de protocolo for 0xFE, o fornecedor deverá fornecer um co-instalador de dispositivo ou classe para preencher corretamente as configurações do Registro TAPI.

Modelo de gerenciamento de dispositivo WMCDC

As coleções de interfaces do modelo de gerenciamento de dispositivo (DMM) do WMCDC USB têm as propriedades a seguir.

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.6.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master DMM (0x09).
Protocolo Qualquer um.
Enumerated Sim.
Interfaces relacionadas Nenhum.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_09
USB\Vid_%04x&Pid_%04x&Cdc_09&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_09
IDs compatíveis USB\Class_02&SubClass_09&Prot_%02X
USB\Class_02&SubClass_09
USB\Class_02
Tratamento especial Esse modelo de controle não usa um UFD (descritor funcional de união).

Modelo de linha direta móvel WMCDC

As coleções de interface do modelo de linha direta móvel (MDLM) do WMCDC USB têm as seguintes propriedades:

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.7
Classe da interface master Classe de interface de comunicação (0x02)
Subclasse da interface master MDLM (0x0A)
Protocolo Qualquer
Enumerated Yes
Interfaces relacionadas Uma ou mais interfaces de classe de dados que o UFD (descritor funcional de união) faz referência
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0A
USB\Vid_%04x&Pid_%04x&Cdc_0A&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0A
IDs compatíveis USB\Class_02&SubClass_0A&Prot_%02X
USB\Class_02&SubClass_0A
USB\Class_02
Tratamento especial Nenhum.

Modelo de controle OBEX do WMCDC (vários PDOs)

Há duas maneiras de enumerar coleções de interface do Modelo de Controle OBEX (Object Exchange Protocol): o driver pai genérico USB pode agrupar todas as interfaces OBEX e criar um único objeto de dispositivo físico (PDO) para todas as interfaces OBEX ou o driver pai pode criar um PDO separado para cada interface OBEX.

Quando o driver pai genérico USB atribui PDOs separados a cada interface OBEX, os PDOs têm as propriedades a seguir.

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.5.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master OBEX (0x0B).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o UFD (descritor funcional de união) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_0B
USB\Vid_%04x&Pid_%04x&Cdc_0B&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_0B
IDs compatíveis USB\Class_02&SubClass_0B&Prot_00
USB\Class_02&SubClass_0B
USB\Class_02
Tratamento especial As configurações do Registro associadas à instância do driver pai genérico USB que gerencia o dispositivo composto determinam se as interfaces OBEX são gerenciadas com um único PDO ou vários PDOs.

Modelo de controle OBEX do WMCDC (PDO único)

Há duas maneiras de enumerar coleções de interface de modelo de controle OBEX (Object Exchange Protocol): o driver pai genérico USB pode agrupar todas as interfaces OBEX e criar um único objeto de dispositivo físico (PDO) para todas as interfaces OBEX ou o driver pai pode criar um PDO separado para cada interface OBEX.

Quando o driver pai genérico USB atribui um único PDO a todas as interfaces OBEX, o PDO tem as propriedades a seguir.

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.5.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master OBEX (0x0B).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o UFD (descritor funcional de união) faz referência.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&WPD_OBEX
USB\Vid_%04x&Pid_%04x&WPD_OBEX&MI_%02x
USB\Vid_%04x&Pid_%04x&WPD_OBEX
IDs compatíveis USB\Class_02&WPD_OBEX
USB\Class_02
Tratamento especial As configurações do Registro associadas à instância do driver pai genérico USB que gerencia o dispositivo composto determinam se as interfaces OBEX são gerenciadas com um único PDO ou vários PDOs. Para obter uma explicação das configurações do Registro que especificam como o driver pai genérico USB enumera interfaces OBEX, consulte Enumeração de coleções de interfaces em dispositivos compostos USB.

Modelo de controle de aparelho sem fio WMCDC

O driver pai genérico USB nem sempre enumera coleções de interface whcm (modelo de controle de aparelho sem fio). As configurações do Registro associadas à instância do driver pai genérico USB que gerencia a coleção de interfaces WHCM determinam se o driver pai genérico USB cria um PDO (objeto de dispositivo físico) para a coleção de interfaces ou não. Para obter uma explicação das configurações do Registro que especificam como o driver pai genérico USB enumera interfaces WHCM, consulte Enumeração de coleções de interfaces em dispositivos compostos USB.

As coleções de interface WHCM enumeradas têm as propriedades a seguir.

Propriedade Descrição
Referência Especificação de subclasse CDC do Barramento Serial Universal para Dispositivos de Comunicação Móvel Sem Fio, versão 1.0, Seção 6.1.
Classe da interface master Classe de interface de comunicação (0x02).
Subclasse da interface master WHCM (0x08).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Nenhum.
Hardware IDs USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Rev_%04x&Cdc_08
USB\Vid_%04x&Pid_%04x&Cdc_08&MI_%02x
USB\Vid_%04x&Pid_%04x&Cdc_08
IDs compatíveis USB\Class_02&SubClass_08&Prot_00
USB\Class_02&SubClass_08
USB\Class_02
Tratamento especial O UFD (descritor funcional de união) identifica interfaces associadas a um aparelho lógico.

Os formatos de ID de hardware nos tópicos anteriores descrevem usar as seguintes convenções:

  • um formato printf de linguagem C representa inteiros. Por exemplo, "%04x" significa um inteiro hexadecimal de 4 dígitos, "%02x" significa um inteiro hexadecimal de 2 dígitos e assim por diante.
  • O inteiro que segue a cadeia de caracteres "Vid_" é uma representação hexadecimal de 4 dígitos do código do fornecedor que o comitê USB (<www.usb.org>) atribui ao fornecedor.
  • O inteiro que segue a cadeia de caracteres "Pid_" é uma representação hexadecimal de 4 dígitos do código do produto que o fornecedor atribui ao dispositivo.
  • O inteiro que segue a cadeia de caracteres "Rev_" é uma representação hexadecimal de 4 dígitos do número de revisão do dispositivo.
  • O inteiro que segue a cadeia de caracteres "Cdc_" é a subclasse da interface.
  • O inteiro que segue a cadeia de caracteres "Prot_" é o número do protocolo.
  • O inteiro que segue a cadeia de caracteres "MI_" é uma representação hexadecimal de dois dígitos do número da interface, que é extraído do campo bInterfaceNumber do descritor de interface.

Enumeração de coleções de interfaces em dispositivos USB com IADs

Se um dispositivo composto USB tiver um IAD (descritor de associação de interface) em seu firmware, o Windows enumerará coleções de interface como se cada coleção fosse um único dispositivo e atribuisse um único PDO (objeto de dispositivo físico) a cada coleção de interfaces e associasse hardware e identificadores compatíveis (IDs) ao PDO. Para obter uma descrição detalhada das IADs, consulte Descritor de associação de interface USB. Esta seção descreve as IDs de hardware e IDs (identificadores compatíveis) atribuídas a coleções de interface associadas a um IAD.

IDs de hardware de dispositivos USB com IADs

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

Nessas IDs de hardware,

  • v(4) é o código de fornecedor de quatro dígitos que o comitê USB atribui ao fornecedor e que é extraído do campo idVendor do descritor do dispositivo.
  • p(4) é o código do produto de quatro dígitos que o fornecedor atribui ao dispositivo e que é extraído do campo idProduct do descritor do dispositivo.
  • r(4) é o número de versão do dispositivo de quatro dígitos, em revisão decimal codificada binária, que o fornecedor atribui ao dispositivo e que é extraído do campo bcdDevice do descritor do dispositivo.
  • z(2) é o número da interface de dois dígitos extraído do campo bFirstInterface do IAD.

IDs compatíveis de dispositivos USB com IADs

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

Nessas IDs compatíveis, c(2), s(2) e p(2) contêm valores que são obtidos, respectivamente, dos campos bFunctionClass, bFunctionSubClass e bFunctionProtocol do IAD.

Você não pode usar IADs recursivamente para associar funções de funções. Em particular, se um dispositivo tiver descritores IAD em seu firmware, o driver pai genérico não agrupará interfaces por classe de dispositivo de áudio, conforme descrito em Enumeração de Coleções de Interfaces em Dispositivos Compostos USB.

Enumeração de coleções de interfaces em dispositivos de áudio sem IADs

Para dispositivos de áudio, o sistema operacional Windows pode enumerar grupos de interfaces (coleções de interfaces) associadas a uma função e atribuir um único PDO (objeto de dispositivo físico) a cada grupo, mesmo quando o dispositivo não tem um IAD (descritor de associação de interface).

O sistema operacional agrupa as interfaces de dispositivos de áudio compostos em coleções de interfaces, se as interfaces atenderem às seguintes condições:

  • Todas as interfaces na coleção de interfaces devem ser consecutivas. Em outras palavras, as interfaces devem ser adjacentes umas às outras na memória do firmware.
  • Todas as interfaces na coleção de interfaces devem pertencer à classe de dispositivo de áudio. O fabricante do dispositivo especifica que uma interface pertence à classe de dispositivo de áudio atribuindo um valor de 0x01 ao campo bInterfaceClass do descritor de interface.
  • Cada interface na coleção de interfaces deve ter uma subclasse diferente da primeira interface na coleção. O campo bInterfaceSubClass do descritor de interface especifica a subclasse do dispositivo da interface.

Se uma interface não atender a todas essas três condições, o Windows tentará enumerá-la separadamente em vez de agrupá-la com as outras interfaces de classe de áudio.

O sistema operacional não agrupa as interfaces de classe de áudio de maneira especial se um IAD (descritor de associação de interface) estiver presente no firmware do dispositivo. O método IAD é sempre o método preferencial de agrupamento de interfaces USB.

Esta seção descreve o hardware e as IDs (identificadores compatíveis) associados ao PDO criado pelo sistema operacional para uma coleção de interfaces cujas interfaces pertencem à classe de dispositivo de áudio.

IDs de hardware de dispositivos de áudio sem IADs

USB\VID_v(4)&PID_p(4)&Rev_r(4)&MI_z(2)

USB\VID_v(4)&PID_p(4)&MI_z(2)

Nessas IDs de hardware,

  • v(4) é o código de fornecedor de quatro dígitos que o comitê de padrões USB atribui ao fornecedor e que é extraído do campo idVendor do descritor de dispositivo.
  • p(4) é o código do produto de quatro dígitos que o fornecedor atribui ao dispositivo e que é extraído do campo idProduct do descritor do dispositivo.
  • r(4) é o número de versão do dispositivo de quatro dígitos, em revisão decimal codificada binária, que o fornecedor atribui ao dispositivo e que é extraído do campo bcdDevice do descritor do dispositivo.
  • z(2) é o número da interface de dois dígitos extraído do campo bInterfaceNumber do descritor de interface.

IDs compatíveis de dispositivos de áudio sem IADs

USB\Class_c(2)&SubClass_s(2)&Prot_p(2)

USB\Class_c(2)&SubClass_s(2)

USB\Class_c(2)

Nessas IDs compatíveis, c(2), s(2) e p(2) contêm valores que são obtidos, respectivamente, dos campos bInterfaceClass, bInterfaceSubClass e bInterfaceProtocol do primeiro descritor de interface USB em cada coleção de interfaces.