Partilhar via


Suplemento de modelo de interface MB

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

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

Para dar suporte ao descritor do sistema operacional, o dispositivo deve implementar o descritor de cadeia de caracteres. Descritor de cadeia de caracteres

O descritor de cadeia de caracteres do sistema operacional da Microsoft é uma cadeia de caracteres armazenada em 0xEE de índice de cadeia de caracteres. O formato dessa cadeia de caracteres é bem definido.

O Descritor de Cadeia de Caracteres do Sistema Operacional da Microsoft é usado para alcançar os objetivos a seguir

  • A presença do descritor de cadeia de caracteres do sistema operacional da Microsoft indica ao sistema operacional que o dispositivo tem informações inseridas nele, na forma de descritores de recursos do sistema operacional da Microsoft.
  • O descritor de cadeia de caracteres do sistema operacional da Microsoft tem um campo de assinatura inserido 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 da Microsoft também tem um número de versão inserido que permite revisões futuras do descritor do sistema operacional da Microsoft.

Apenas um descritor de cadeia de caracteres do sistema operacional da 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 sistema operacional

Aqui está a estrutura do descritor de cadeia de caracteres:

Estrutura do descritor de cadeia de caracteres

Campo Comprimento (Bytes) Valor Descrição

bLength

1

0x12

Comprimento do descritor

bDescriptorType

1

0x03

Descritor de cadeia de caracteres

qwSignature

14

"MSFT100"

Campo Assinatura (4D00530046005400310030003000)

bMS_VendorCode

1

Código do fornecedor

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

bPad

1

0x00

Campo de teclado

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

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. Este é o formato da solicitação:

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

bmRequestType bRequest wValue Windex wLength 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 de 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 de 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 da 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 da 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 definida como zero para um descritor de cadeia de caracteres do sistema operacional da 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 uma parada. Quando os dispositivos não responderem com uma parada, uma redefinição zero única será emitida para o dispositivo (para recuperá-lo, se ele deve entrar 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 operacional deve verificar se a cadeia de caracteres armazenada no índice 0xEE é, de fato, o descritor de cadeia de caracteres do sistema operacional microsoft. Para verificar isso, os testes a seguir serão realizados. A falha de qualquer um inibirá a recuperação dos descritores de recursos do sistema operacional da 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 da Microsoft. Isso pode ser verificado comparando o campo de assinatura na cadeia de caracteres com a entrada de campo de assinatura especificada anteriormente. Uma incompatibilidade evitaria 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 de versão especificado no campo de assinatura. O número de versão especificado (na cadeia de caracteres "MSFT100") é 1,00. Isso corresponde a um descritor de cadeia de caracteres de 18 bytes.

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

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

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

Descritor de recursos

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 recursos do sistema operacional da Microsoft, uma solicitação de GET_MS_DESCRIPTOR especial precisa ser emitida para o dispositivo. Este é o formato da solicitação:

Formato de solicitação de dispositivo padrão

bmRequestType bRequest wValue Windex wLength Dados

1100 0000b

GET_MS_DESCRIPTOR

X

Índice de Recursos

Comprimento

Retorna descritor

O campo bmRequestType é um bitmap composto por três partes — direção de 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 da 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 recursos do so da 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 é colocado em uso 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 várias 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 definido inicialmente como zero. Se um descritor completo (o tamanho for 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 da página incrementado). Esse processo será repetido até que um descritor com um 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 do índice de recursos para o descritor de recursos do sistema operacional da Microsoft que está sendo recuperado. A Microsoft manterá essa lista de descritores e índices de recursos do so da Microsoft. Para saber mais sobre os descritores de recursos do so da Microsoft, consulte Descritores do sistema operacional da Microsoft.

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

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

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

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

  • Todos os descritores de recursos do sistema operacional da 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 da Microsoft terão um tamanho e um número de versão inseridos neles. Esses valores sempre devem relatar informações corretas ao sistema operacional.
  • Um dispositivo pode ter mais de um descritor de recursos do so Da Microsoft inserido em seu firmware.
  • Alguns descritores de recursos do sistema operacional da Microsoft são armazenados em um nível por interface, enquanto outros são exclusivos do dispositivo. Os descritores de recursos do sistema operacional Microsoft 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 dar suporte ao MBIM, um dispositivo também deve dar suporte ao descritor de configuração estendido, que é um dos descritores de recursos definidos. A estrutura desse descritor é a seguinte.

Seção Cabeçalho

A seção de cabeçalho armazena informações sobre o restante do descritor de configuração estendido. 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). As revisões futuras desse descritor podem ser lançadas posteriormente. 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

dwLength

4

DWORD sem sinal

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

4

bcdVersion

2

BCD

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

6

Windex

2

WORD

Corrigido = 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

Seção Função

A seção de função fornece duas informações importantes. Ele agrupa interfaces consecutivas que servem a uma finalidade 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 valores que devem ser usados por um dispositivo MBIM:

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

Deslocamento¹ Campo Tamanho Valor Descrição

0

bFirstInterfaceNumber

1

Byte

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

1

bInterfaceCount

1

Byte

Número total de Interfaces que devem ser incluídas nessa função = 0x01

2

compatibleID

8

Bytes

ID compatível

10

subCompatibleID

8

Bytes

ID subcompatível

18

RESERVADO

6

RESERVED = 0

¹Offset 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 estendido, 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

bConfiguration compatibleID 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. bConfiguration não pode ser maior que 4; ou seja, a função MBIM deve ser exposta nas quatro primeiras configurações.
  • compatibleID permanece o mesmo para todas as configurações. As alterações de subcompatibleID com base na configuração

Exemplo

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

Exemplo de um dispositivo de banda larga móvel de várias configurações

bConfiguration 1 (Windows-7-Configuration) 2 (IHV-NCM-1.0-Configuration) 3 (Windows-8-Configuration) 3 (IHV-NCM-2.0-Configuration)

Funções expostas

CDROM

DP

CD-ROM

DP

NCM1.0

Modem

TV

GPS

FP

Pc/SC smart cartão

Voz

Fig

CD-ROM

DP

MBIM

CD-ROM

DP

NCM2.0

Modem

TV

GPS

FP

Pc/SC smart cartão

Voz

Fig

As tabelas a seguir mostram os valores usados pelo descritor de cadeia de caracteres do sistema operacional Microsoft e o descritor de recursos de configuração estendida do sistema operacional microsoft para o cenário de várias configurações do exemplo anterior.

Exemplo de um dispositivo de banda larga móvel de várias configurações

Campo Comprimento (Bytes) Valor

bLength

1

0x12

bDescriptorType

1

0x03

qwSignature

14

'MSFT100'

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

bMS_VendorCode

1

0xA5

bPad

1

0x00

Exemplo de cabeçalho do descritor de recurso de configuração estendida do sistema operacional da Microsoft

Deslocamento Campo Tamanho Valor

0

dwLength

4

16

4

bcdVersion

2

0100H

6

Windex

2

0x0004

8

bCount

1

1

9

RESERVADO

7

Exemplo de função descritor de recurso de configuração estendida do sistema operacional da Microsoft

Offset² Campo Tamanho Valor

0

bFirstInterfaceNumber

1

1

bInterfaceCount

1

2

compatibleID

8

10

subCompatibleID

8

18

RESERVADO

6

²Offset 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 estendido, adicione o comprimento das seções que o precedem.