Compartilhar via


Visão geral da enumeração de coleções de interface 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 interface 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 Usbccgp.sys (Driver Pai Genérico) USB, 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 interface usando rotinas de retorno de chamada fornecidas pelo fornecedor, consulte Enumeração de coleções de interface em dispositivos compostos USB.

  2. Descritores funcionais da União

    . 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 interface.

  4. Método de áudio herdado

    O driver pai genérico USB é capaz de enumerar coleções de interface 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 interface para dispositivos compostos

Alguns dispositivos USB têm coleções de interface que o IAD (Descritor de Associação de Interface USB) não consegue 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 interface personalizadas para o dispositivo.

Para que o driver pai genérico defina coleções de interface 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 de 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 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 IRP_MN_QUERY_INTERFACE , o driver de filtro deve verificar 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 interface. 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 relate 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, pois 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 estar carregado quando o pai genérico USB enumera as coleções de interface do dispositivo composto. Isso requer 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 (CDC) do Barramento Serial Universal (USB) 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 dispositivos 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 geralmente incluem funções como um modem de dados/fax, um armazenamento de objetos e um recurso de controle de chamadas. Um aparelho lógico também pode incluir funções de suporte definidas por outras especificações USB, como a especificação de Classe de Áudio USB, a especificação de classe HID (Dispositivo de Entrada Humana) USB e a especificação de Classe de Vídeo USB.

A arquitetura Windows WMCDC usa drivers nativos do Windows para gerenciar as funções do seu dispositivo WMCDC. Por exemplo, você pode usar o subsistema TAPI (interface de programação 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 de LAN Ethernet do dispositivo. Além disso, você pode gerenciar algumas funções, como uma função OBEX (Object Exchange Protocol), em software de modo de usuário com a ajuda do WinUSB (Winusb.sys).

Esta imagem mostra uma pilha de driver de exemplo 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 de 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 a Introdução ao WinUSB for Developers exporta para se comunicar com a pilha USB. Em geral, um arquivo INF fornecido pelo fornecedor carregará uma instância separada do Winusb.sys para cada coleção de interface 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 carregue 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 para 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 que são representados no arquivo INF por pares de dígitos hexadecimais: 02, 00 e 00. Esses três números correspondem aos valores que o USB Implementers Forum atribuiu à classe de dispositivo CDC, à subclasse de dispositivo CDC e ao protocolo de dispositivo CDC, respectivamente.

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

Enumerando coleções de interface no WMCDC

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

As coleções de interface CDC contêm uma interface mestra (USB_INTERFACE_DESCRIPTOR) que pertence à classe de interface de comunicação (bInterfaceClass = 0x02) ou à classe de interface de dados (bInterfaceClass = 0x0A). Se a interface mestre pertencer à classe de interface de comunicação (que é a situação típica), a subclasse da interface mestre (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 que o USB Implementers Forum define, consulte a especificação CDC e a especificação WMCDC.

A interface mestra de uma coleção de interfaces é seguida por um conjunto de descritores funcionais obrigatórios específicos da classe, incluindo um UFD (descritor funcional de união). O UFD lista os números das interfaces que pertencem à coleção. O campo bMasterInterface do UFD contém o número da interface mestre. 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 Usbccgp.sys (Driver Pai Genérico) USB cria um PDO (objeto de dispositivo físico) para cada UFD. Mas alguns modelos de controle incluem uma interface de áudio que 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) no UFD da coleção de interfaces, mas o driver pai genérico cria um PDO separado para a interface de áudio. O PDO para a interface de áudio e 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 é 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 carregue uma instância do Usbccgp.sys e defina 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 os dois bits como 1, o arquivo INF deve ter a seguinte linha.

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 um dos bits pode ser definido ou redefinido, independentemente do outro bit.

As figuras a seguir ilustram como diferentes configurações do Registro podem criar diferentes árvores de dispositivos 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 que ilustra uma coleção de interface para mapeamento de objeto de dispositivo para CdcFlags = 0x00000000.

A coleção de interface WHCM (modelo de controle de monofone sem fio) na figura anterior contém três coleções de interface subordinadas (bSubordinateInterface): duas coleções OBEX e uma coleção de modem. O bit 0 dos CdcFlags é 0, portanto, o driver pai genérico USB não cria um PDO para a coleção de interface 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 que ilustra uma coleção de interface 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 interface 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 multiplexar 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 monofone sem fio) de uma maneira especial.

A lista a seguir resume as maneiras mais importantes pelas quais o tratamento de coleções de interface CDC e WMCDC difere daquele 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 interface. Em particular, uma coleção de interface de aparelho lógico (ou seja, uma coleção de interface WHCM) pode conter outras coleções de interface subordinadas. Por exemplo, um telefone compatível com WMCDC pode ter uma coleção de interface WHCM, que, por sua vez, contém uma coleção de modelos de controle abstratos 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 WHCM que não são enumeradas permanecem ocultas, mas o driver pai genérico usa informações dos UFDs (descritores de função de união) que pertencem a coleções de interface WHCM para agrupar e enumerar coleções de interface subordinadas.
  • Você pode configurar o driver pai genérico USB para criar PDOs (objetos de dispositivo físico) separados para coleções de interface de modelo de controle OBEX ou para criar um único PDO para todas as coleções de interface de modelo de controle OBEX.
  • A lista de números de interface em um 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 IAD (USB Interface Association Descriptor), cujas interfaces devem ser contíguas e ter números sequenciais.
  • Os UFDs podem incluir coleções de interface de áudio relacionadas
  • Os identificadores de hardware (IDs) 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 arquivos INF com 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 dos drivers atuais fornecidos pelo fornecedor 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 das coleções de interface com suporte nos sistemas operacionais Microsoft Windows. Cada descrição inclui, entre outras coisas, uma lista de identificadores (IDs) de hardware e dispositivo que o driver pai genérico USB gera para a coleção de interface.

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

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

Interfaces de classe de áudio

As 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 Universal Serial Bus 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 na coleção.
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Zero ou mais interfaces contíguas que pertencem à subclasse de streaming (0x02).
IDs de hardware 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 do CDC

Existem 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 USB Wireless Mobile Communication Device Class (WMCDC) contém uma definição estendida do ACM.

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

As coleções de interface 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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre 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) referencia.
IDs de hardware 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
Manuseio especial O UFD pode fazer referência a uma coleção de interface de áudio enumerada independentemente da coleção de interface do ACM.

Modelo de controle de rede ATM CDC

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

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 mestre Classe de interface de comunicação (0x02)
Subclasse da interface mestre ANCM (0x07)
Protocolo Nenhum (0x00)
Enumerated Sim
Interfaces relacionadas Uma interface de classe de dados referenciada pelo UFD (Descritor Funcional da União)
IDs de hardware 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
Manuseio especial Nenhum

Modelo de controle CDC CAPI

As coleções de interface do Modelo de Controle da API ISDN Comum (CAPI) do CDC USB têm as seguintes propriedades.

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 mestre Classe de interface de comunicação (0x02)
Subclasse da interface mestre CAPI (0x05)
Protocolo Nenhum (0x00)
Enumerated Sim
Interfaces relacionadas Uma interface de classe de dados que o descritor funcional de união (UFD) faz referência.
IDs de hardware 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
Manuseio especial Nenhum

Modelo de controle de linha direta CDC

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

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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre DLCM (0x01).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Classe de áudio ou interfaces definidas pelo fornecedor que o UFD (descritor funcional de união) faz referência.
IDs de hardware 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
Manuseio especial O UFD faz referência a uma coleção de interface de classe de áudio que é enumerada independentemente da coleção de interface DLCM.

Modelo de controle de rede Ethernet CDC

As coleções de interface do modelo de controle de rede Ethernet (ENCM) USB CDC têm as seguintes propriedades.

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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre ENCM (0x06).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o descritor funcional de união (UFD) faz referência.
IDs de hardware 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
Manuseio 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 interface.

Modelo de controle ISDN multicanal CDC

As coleções de interface MCCM (modelo de controle ISDN multicanal) USB CDC têm as seguintes propriedades.

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 mestre Classe de interface de comunicação (0x02)
Subclasse da interface mestre MCCM (0x04)
Protocolo Nenhum (0x00)
Enumerated Sim
Interfaces relacionadas Várias interfaces de classe de dados que o UFD (descritor funcional de união) faz referência.
IDs de hardware 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
Manuseio especial Nenhum

Modelo de controle telefônico CDC

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

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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre 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 do 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
Manuseio especial O UFD pode fazer referência a uma coleção de interface de classe de áudio enumerada independentemente da coleção de interface TCM.

Interfaces exclusivas do fornecedor do MCPC

O Mobile Computing Promotion Consortium (MCPC) definiu um formato para coleções de interface antes que a especificação WMCDC (Wireless Mobile Communication Device Class) fornecesse 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 pode enumerar coleções de interface MCPC se o WMCDC estiver habilitado. As coleções de interface MCPC têm as seguintes propriedades.

Propriedade Descrição
Referência Especificação GL-004 do Consórcio de Promoção de Computação Móvel (MCPC)
Classe CDC (0x02)
Subclasse 0x88
Protocolo Nenhum (0x00)
Enumerated Sim
Interfaces relacionadas Zero ou mais interfaces de classe de dados que o descritor funcional de união (UFD) faz referência
IDs de hardware 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
Manuseio especial Nenhum

Interfaces de classe de vídeo

As 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 Universal Serial Bus 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).
IDs de hardware 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
Manuseio 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

Existem 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 USB Wireless Mobile Communication Device Class (WMCDC) contém uma definição estendida do ACM. As coleções do ACM que contêm uma função de fax/modem devem usar a definição WMCDC do ACM em vez da definição original do CDC ACM.

As coleções de interface 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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre 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 descritor funcional de união (UFD) faz referência.
IDs de hardware 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
Manuseio especial O UFD pode fazer referência a uma coleção de interface de áudio enumerada independentemente da coleção de interface 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 interface não estiver em conformidade com os requisitos do WMCDC, mas a interface estiver em conformidade com os requisitos do CDC, o driver pai genérico USB enumerará a coleção de interface 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) nativo para gerenciar a função de modem e definirá as configurações de registro TAPI apropriadas, 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 dispositivos WMCDC

As coleções de interface do modelo de gerenciamento de dispositivos (DMM) do WMCDC USB têm as seguintes propriedades.

Propriedade Descrição
Referência Especificação de subclasse CDC de barramento serial universal para dispositivos de comunicação móvel sem fio, versão 1.0, Seção 6.6.
Classe da interface mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre DMM (0x09).
Protocolo Qualquer um.
Enumerated Sim.
Interfaces relacionadas Nenhum.
IDs de hardware 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
Manuseio especial Esse modelo de controle não usa um descritor funcional de união (UFD).

Modelo de linha direta móvel WMCDC

As coleções de interface MDLM (modelo de linha direta móvel) 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 mestre Classe de interface de comunicação (0x02)
Subclasse da interface mestre MDLM (0x0A)
Protocolo Qualquer
Enumerated Sim
Interfaces relacionadas Uma ou mais interfaces de classe de dados que o UFD (descritor funcional de união) faz referência
IDs de hardware 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
Manuseio especial Nenhum.

Modelo de controle WMCDC OBEX (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 PDO (objeto de dispositivo físico) 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 mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre OBEX (0x0B).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o descritor funcional de união (UFD) faz referência.
IDs de hardware 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
Manuseio 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 WMCDC OBEX (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 PDO (objeto de dispositivo físico) 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 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.5.
Classe da interface mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre OBEX (0x0B).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Uma interface de classe de dados que o descritor funcional de união (UFD) faz referência.
IDs de hardware 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
Manuseio 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 interface 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 interface WHCM determinam se o driver pai genérico USB cria um PDO (objeto de dispositivo físico) para a coleção de interface 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 interface em dispositivos compostos USB.

As coleções de interface WHCM enumeradas 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.1.
Classe da interface mestre Classe de Interface de Comunicação (0x02).
Subclasse da interface mestre WHCM (0x08).
Protocolo Nenhum (0x00).
Enumerated Sim.
Interfaces relacionadas Nenhum.
IDs de hardware 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
Manuseio 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 o uso das seguintes convenções:

  • um formato printf da linguagem C representa números 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 string "Cdc_" é a subclasse de 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 2 dígitos do número da interface, que é extraído do campo bInterfaceNumber do descritor da interface.

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

Se um dispositivo composto USB tiver um IAD (descritor de associação de interface) em seu firmware, Windows enumerará coleções de interface como se cada coleção fosse um único dispositivo e atribuirá um único PDO (objeto de dispositivo físico) a cada coleção de interface e associará hardware e IDs (identificadores compatíveis) ao PDO. Para obter uma descrição detalhada dos IADs, consulte Descritor de Associação de Interface USB. Esta seção descreve as IDs de hardware e os identificadores compatíveis (IDs) atribuídos 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)

Nesses IDs de hardware,

  • v(4) é o código do 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 de 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 de 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 interface em dispositivos compostos USB.

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

Para dispositivos de áudio, o sistema operacional Windows pode enumerar grupos de interfaces (coleções de interface) 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 composto 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 de dispositivo da interface.

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

O sistema operacional não agrupa 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 preferido de agrupamento de interfaces USB.

Esta seção descreve o hardware e os identificadores compatíveis (IDs) 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)

Nesses IDs de hardware,

  • v(4) é o código do fornecedor de quatro dígitos que o comitê de padrões USB atribui ao fornecedor e que é extraído do campo idVendor do descritor do dispositivo.
  • p(4) é o código de 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 de 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 interface.