Partilhar via


Suplemento do Modelo de Interface MB

O descritor do sistema operacional Microsoft é dividido nos seguintes segmentos:

  • Um descritor de cadeia de caracteres do sistema operacional Microsoft
  • Um ou mais descritores de recursos do sistema operacional Microsoft

Para suportar o descritor do sistema operacional, o dispositivo deve implementar o descritor de cadeia de caracteres. Descritor de String

O descritor de cadeia de caracteres do sistema operacional Microsoft é uma cadeia de caracteres armazenada no índice de cadeia de caracteres 0xEE. O formato desta cadeia de caracteres está bem definido.

O Microsoft OS String Descriptor é usado para atingir os seguintes objetivos:

  • A presença do descritor de cadeia de caracteres do Microsoft OS indica ao sistema operacional que o dispositivo tem informações incorporadas nele, na forma de descritores de recursos do Microsoft OS.
  • O descritor de cadeia de caracteres do sistema operacional Microsoft tem um campo de assinatura incorporado que é usado para diferenciá-lo de cadeias de caracteres aleatórias que podem estar em um dispositivo no índice de cadeia de caracteres 0xEE.
  • O descritor de cadeia de caracteres do sistema operacional Microsoft também tem um número de versão incorporado que permite revisões futuras do descritor do sistema operacional Microsoft.

Apenas um descritor de cadeia de caracteres do sistema operacional Microsoft é armazenado em um dispositivo. As seções a seguir descrevem a estrutura do descritor de cadeia de caracteres do sistema operacional Microsoft e seu procedimento de recuperação. Estrutura da cadeia de caracteres do SO

Aqui está a estrutura do descritor de string:

Estrutura do descritor de cadeia de caracteres

Campo Tamanho (Bytes) Valor Descrição

bComprimento

1

0x12

Comprimento do descritor

bDescritorType

1

0x03

Descritor de cadeia de caracteres

qwAssinatura

14

"MSFT100"

Campo de assinatura (4D00530046005400310030003000)

bMS_CódigoFornecedor

1

Código do fornecedor

Código do fornecedor para buscar outros descritores de recursos do sistema operacional

bPad

1

0x00

Campo de almofada

A estrutura do descritor de cadeia do sistema operativo Microsoft é fixada para a versão 1.00 e tem um comprimento total de 18 bytes. O número da versão do descritor de cadeia de caracteres da Microsoft OS está listado no campo qwSignature. As informações armazenadas no campo bMS_VendorCode devem ter um valor de byte único. Ele será usado para recuperar descritores de recursos do sistema operacional Microsoft e esse valor de byte é usado no campo bmRequestType descrito da seguinte forma:

Recuperando o descritor de cadeia de caracteres do sistema operacional

Para recuperar as informações armazenadas na cadeia de caracteres, uma solicitação de GET_DESCRIPTOR padrão deve ser emitida para o dispositivo. Eis o formato do pedido:

de solicitação de cadeia de caracteres de Get_Descriptor padrão

bmRequestType bSolicitar wValor wÍndice wComprimento Dados

1000 0000b

GET_DESCRIPTOR

0x03EE

0x0000

0x12

Retorna a cadeia de caracteres

O campo bmRequestType é um bitmap composto por três partes: direção da transferência de dados, tipo de descritor e destinatário. De acordo com a especificação USB, o valor de bmRequestType é definido como 1000 0000b (0x80).

Para uma solicitação GET_DESCRIPTOR, o campo wValue é dividido em duas partes. O byte alto armazena o tipo de descritor e o byte baixo armazena o índice do descritor. Para recuperar o descritor de cadeia de caracteres do sistema operacional Microsoft, o byte alto deve ser definido para recuperar um descritor de cadeia de caracteres — 0x03. Como o descritor de cadeia de caracteres do sistema operacional Microsoft é sempre armazenado no índice 0xEE, esse índice de cadeia de caracteres deve ser armazenado no byte inferior do campo wValue.

O wIndex é usado para armazenar a ID do idioma, mas deve ser definido como zero para um descritor de cadeia de caracteres do sistema operacional Microsoft.

O campo wLength é usado para indicar o comprimento do descritor de cadeia de caracteres a ser recuperado. O dispositivo deve responder a qualquer intervalo válido de 0x02 a 0xFF.

Se um dispositivo não tiver um descritor válido no endereço correspondente (0xEE), ele responderá com um erro de solicitação ou paralisação. Quando os dispositivos não respondem com um bloqueio, uma reinicialização zero de única extremidade será emitida para o dispositivo (para recuperá-lo, caso ele entre em um estado desconhecido).

Verificando a integridade do descritor do sistema operacional

Como os fornecedores têm permissão para usar qualquer ID de cadeia de caracteres para armazenar informações, o sistema operativo deve verificar se a cadeia de caracteres armazenada no índice 0xEE é realmente o descritor de cadeia de caracteres do sistema operativo Microsoft. Para verificar isso, serão realizados os seguintes testes. A falha de qualquer um deles inibirá a recuperação dos descritores de recursos do sistema operacional Microsoft.

  • Se um fornecedor armazenar uma cadeia de caracteres no local do índice 0xEE, o sistema operacional recuperará a cadeia de caracteres e a consultará para ver se é a cadeia de caracteres do sistema operacional Microsoft. Isso pode ser verificado comparando o campo de assinatura na cadeia de caracteres com a entrada do campo de assinatura especificada anteriormente. Uma incompatibilidade impediria uma análise adicional da cadeia de caracteres.
  • O segundo teste incluirá uma verificação do comprimento da cadeia de caracteres com base no número da versão especificado no campo de assinatura. O número da versão especificado (na cadeia de caracteres "MSFT100") é 1,00. Isso corresponde a um descritor de cadeia de caracteres de 18 bytes.

Restrições do descritor de cadeia de caracteres do sistema operacional Microsoft

As restrições a seguir se aplicam aos descritores de cadeia de caracteres do sistema operacional Microsoft e sua recuperação:

  • Para armazenar informações em conformidade com a especificação do descritor do sistema operacional Microsoft, o dispositivo deve ter um e único descritor de cadeia de caracteres do sistema operacional Microsoft que esteja em conformidade com as informações descritas em Microsoft OS Descriptors.
  • Um fornecedor de dispositivo é livre para usar qualquer valor no campo bMS_VendorCode no descritor de cadeia de caracteres do sistema operacional Microsoft

descritor de características

Um descritor de recurso é um descritor de formato fixo que foi definido para uma finalidade específica.

Recuperando um descritor de recursos do sistema operacional

Para recuperar um descritor de recurso do sistema operacional Microsoft, uma solicitação de GET_MS_DESCRIPTOR especial precisa ser emitida para o dispositivo. Eis o formato do pedido:

Formato de solicitação de dispositivo padrão

bmRequestType bSolicitar wValor wÍndice wComprimento Dados

1100 0000b

GET_MS_DESCRIPTOR

X

Índice de Características

Comprimento

Devolve o descritor

O campo bmRequestType é um bitmap composto por três partes — direção da transferência de dados, tipo de descritor e destinatário — e está de acordo com a especificação USB. O descritor de recursos do sistema operacional Microsoft é um descritor específico do fornecedor e a direção da transferência de dados é do dispositivo para o host. Portanto, o valor de bmRequestType é definido como 1100 0000b (0xC0).

O campo bRequest é usado para indicar o formato da solicitação. Para recuperar um descritor de recurso do sistema operacional Microsoft, o campo bRequest deve ser preenchido com um byte de GET_MS_DESCRIPTOR especial. O valor desse byte é indicado pelo bMS_VendorCode, que é recuperado do descritor de cadeia de caracteres da Microsoft. Para obter mais informações sobre a recuperação do descritor de cadeia de caracteres do sistema operacional Microsoft, consulte Recuperando o descritor de cadeia de caracteres do sistema operacional.

O campo wValue é usado de forma especial e é dividido em um byte alto e um byte baixo. O byte alto é usado para armazenar o número da interface. Isso é essencial para armazenar descritores de recursos por interface, especialmente para dispositivos compostos ou dispositivos com múltiplas interfaces. Na maioria dos casos, a interface 0 será usada. O byte baixo é usado para armazenar um número de página. Esse recurso impede que os descritores tenham um limite de tamanho de 64 KB (um limite definido pelo tamanho do campo wLength). Um descritor será buscado com o valor da página inicialmente definido como zero. Se um descritor completo (o tamanho é de 64 KB) for recebido, o valor da página será incrementado por um e a solicitação para o descritor será enviada novamente (desta vez com o valor de página incrementado). Esse processo será repetido até que um descritor com tamanho inferior a 64 KB seja recebido. Observe que o número máximo de páginas é 255, o que coloca um limite de 16 MB no tamanho do descritor.

O campo wIndex armazena o número de índice do recurso para o descritor de recurso do sistema operacional Microsoft que está sendo recuperado. A Microsoft manterá esta lista de descritores e índices de recursos do sistema operacional Microsoft. Para saber mais sobre os descritores de recursos do Microsoft OS, consulte Microsoft OS Descriptors.

O campo wLength especifica o comprimento do descritor a ser buscado. Se o descritor for maior do que o número de bytes declarado no campo wLength, somente os bytes iniciais do descritor serão retornados. Se for menor do que o valor especificado no campo wLength, um pacote curto será retornado.

Se um descritor específico do sistema operacional não estiver presente, o dispositivo emitirá um erro de solicitação ou paralisação.

Restrições do descritor de recursos do sistema operacional Microsoft

As restrições a seguir se aplicam aos descritores de recursos do sistema operacional Microsoft e sua recuperação.

  • Todos os descritores de recursos do sistema operacional Microsoft são definidos e padronizados. Os fornecedores não têm permissão para modificar, acrescentar ou criar descritores de recursos do sistema operacional Microsoft sem o consentimento direto da Microsoft.
  • Todos os descritores de recursos do sistema operacional Microsoft terão um tamanho e número de versão incorporados neles. Esses valores devem sempre relatar informações corretas para o sistema operacional.
  • Um dispositivo pode ter mais de um descritor de recurso do sistema operacional Microsoft incorporado em seu firmware.
  • Alguns descritores de recursos do sistema operacional Microsoft são armazenados em um nível por interface, enquanto outros são exclusivos para o dispositivo. Os descritores de recursos do Microsoft OS no nível do dispositivo devem definir o byte alto do campo wValue como zero.

Estrutura do descritor de recursos

Para se identificar como capaz de suportar MBIM, um dispositivo também deve suportar o descritor de configuração estendida, que é um dos descritores de recursos definidos. A estrutura deste descritor é a seguinte.

Cabeçalho

A seção header armazena informações sobre o restante do descritor de configuração estendida. O campo dwLength contém o comprimento de todo o descritor de configuração estendida. A seção de cabeçalho também contém um número de versão, que será inicialmente definido como 1.00 (0100H). Revisões futuras deste descritor podem ser lançadas em um estágio posterior. Observe que versões futuras do descritor de configuração estendida também podem precisar aumentar o número de entradas na seção de cabeçalho, portanto, verifique se esse número é armazenado com precisão no dispositivo e lido pelo sistema operacional.

Seção de cabeçalho do descritor de configuração estendida

Deslocamento Campo Tamanho Valor Descrição

0

dwComprimento

4

DWORD não assinado

O campo length descreve o comprimento do descritor de configuração estendida, em bytes.

4

bcdVersão

2

BCD

Número de versão do descritor de configuração estendida em decimal codificado binário (por exemplo, a versão 1.00 é 0100H).

6

wÍndice

2

PALAVRA

Fixo = 0x0004

8

bCount

1

byte

Número total de seções de função que seguem a seção de cabeçalho = 0x01

9

RESERVADO

7

RESERVADO

Secção de Função

A seção de funções fornece duas informações importantes. Ele agrupa interfaces consecutivas que servem a um propósito semelhante em grupos de funções e fornece IDs compatíveis e subcompatíveis para cada função.

Aqui está o formato da seção de função, incluindo os valores que devem ser usados por um dispositivo MBIM:

Seção de função do descritor de configuração estendida

Compensação Campo Tamanho Valor Descrição

0

bFirstInterfaceNumber

1

Byte

Número da interface inicial para esta função = 0x00

1

Contagem de Interfaces

1

Byte

Número total de interfaces que devem ser incluídas a partir desta função = 0x01

2

ID compatível

8

Bytes

ID compatível

10

subCompatibleID

8

Bytes

ID subcompatível

18

RESERVADO

6

RESERVADO = 0

¹O deslocamento da seção de propriedades personalizadas foi redefinido para 0. Para calcular o deslocamento de um campo desde o início do descritor de configuração estendida, adicione o comprimento das seções que o precedem.

IDs compatíveis e subcompatíveis com base na configuração que expõe a função MBIM

bConfiguração ID compatível subCompatibleID

2

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

20000000

(0x32 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

3

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

30000000

(0x33 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

4

ALTRCFG

(0x41 0x4C 0x54 0x52 0x43 0x46 0x47 0x00)

40000000

(0x34 0x00 0x00 0x00 0x00 0x00 0x00 0x00)

  • bConfiguration refere-se ao valor bConfiguration dentro do descritor de configuração USB da configuração que expõe a função MBIM. bConfiguration não pode ser 1 porque essa é a configuração padrão expondo apenas a função CDROM. bConfiguração não pode ser maior que 4; isto é, a função MBIM deve ser exposta dentro das quatro primeiras configurações.
  • compatibleID permanece o mesmo para todas as configurações. O subcompatibleID muda com base na configuração

Exemplo

Esta tabela mostra um cenário de exemplo de multiconfiguração. A tabela lista as funções disponíveis em cada configuração e as ações que diferentes versões do sistema operacional executam para cada uma dessas configurações:

Exemplo de um dispositivo de banda larga móvel multiconfiguração

bConfiguração 1 (Windows-7-Configuração) 2 (IHV-NCM-1.0-Configuração) 3 (Windows-8-Configuração) 3 (IHV-NCM-2.0-Configuração)

Funções divulgadas

CDROM

SD

CD-ROM

SD

NCM1.0

Modem

Televisão

GPS

PQ

Cartão inteligente PC/SC

Voice

Diag

CD-ROM

SD

MBIM

CD-ROM

SD

NCM2.0

Modem

Televisão

GPS

PQ

Cartão inteligente PC/SC

Voice

Diag

As tabelas a seguir mostram os valores usados pelo descritor de cadeia de caracteres do sistema operacional Microsoft e pelo descritor de recurso de configuração estendida do sistema operacional Microsoft para o cenário de configuração múltipla do exemplo anterior.

Exemplo de um dispositivo de banda larga móvel multiconfiguração

Campo Tamanho (Bytes) Valor

bComprimento

1

0x12

bDescritorType

1

0x03

qwAssinatura

14

'MSFT100'

0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 0x31 0x00 0x30 0x00 0x30 0x00

bMS_CódigoFornecedor

1

0xA5

bPad

1

0x00

Exemplo de cabeçalho do descritor de recurso de configuração estendida do Microsoft OS

Deslocamento Campo Tamanho Valor

0

dwComprimento

4

16

4

bcdVersão

2

0100H

6

wÍndice

2

0x0004

8

bCount

1

1

9

RESERVADO

7

Exemplo de função de descritor de recurso de configuração estendida do Microsoft OS

Compensação² Campo Tamanho Valor

0

bFirstInterfaceNumber

1

1

Contagem de Interfaces

1

2

ID compatível

8

10

subCompatibleID

8

18

RESERVADO

6

²O deslocamento da seção de propriedade personalizada foi redefinido para zero. Para calcular o deslocamento de um campo desde o início do descritor de configuração estendida, adicione o comprimento das seções que o precedem.