다음을 통해 공유


MB 인터페이스 모델 보충

Microsoft OS 설명자는 다음 세그먼트로 나뉩니다.

  • 하나의 Microsoft OS 문자열 설명자
  • 하나 이상의 Microsoft OS 기능 설명자

OS 설명자를 지원하려면 디바이스에서 문자열 설명자를 구현해야 합니다. 문자열 설명자

Microsoft OS 문자열 설명자는 문자열 인덱스 0xEE 저장되는 문자열입니다. 이 문자열의 형식이 잘 정의되어 있습니다.

Microsoft OS 문자열 설명자는 다음 목표를 달성하는 데 사용됩니다.

  • Microsoft OS 문자열 설명자의 존재는 디바이스에 포함된 정보가 Microsoft OS 기능 설명자 형태로 운영 체제에 있음을 나타냅니다.
  • Microsoft OS 문자열 설명자에는 문자열 인덱스 0xEE 디바이스에 있을 수 있는 임의의 문자열과 구분하는 데 사용되는 포함된 서명 필드가 있습니다.
  • Microsoft OS 문자열 설명자에는 Microsoft OS 설명자의 향후 수정을 허용하는 포함된 버전 번호도 있습니다.

하나의 Microsoft OS 문자열 설명자만 디바이스에 저장됩니다. 다음 섹션에서는 Microsoft OS 문자열 설명자의 구조와 검색 절차에 대해 설명합니다. OS 문자열의 구조

문자열 설명자의 구조는 다음과 같습니다.

문자열 설명자 구조체

필드 길이(바이트) 설명

bLength

1

0x12

설명자의 길이

bDescriptorType

1

0x03

문자열 설명자

qwSignature

14

"MSFT100"

서명 필드(4D00530046005400310030003000)

bMS_VendorCode

1

공급업체 코드

다른 OS 기능 설명자를 가져오는 공급업체 코드

bPad

1

0x00

패드 필드

Microsoft OS 문자열 설명자의 구조는 버전 1.00에 대해 수정되었으며 전체 길이는 18바이트입니다. Microsoft OS 문자열 설명자의 버전 번호는 qwSignature 필드에 나열됩니다. bMS_VendorCode 필드에 저장된 정보는 단일 바이트 값이어야 합니다. Microsoft OS 기능 설명자를 검색하는 데 사용되며, 이 바이트 값은 다음과 같이 설명된 bmRequestType 필드에 사용됩니다.

OS 문자열 설명자 검색

문자열에 저장된 정보를 검색하려면 표준 GET_DESCRIPTOR 요청을 디바이스에 발급해야 합니다. 요청의 형식은 다음과 같습니다.

표준 Get_Descriptor 문자열 요청

bmRequestType bRequest wValue wIndex wLength 데이터

1000 0000b

GET_DESCRIPTOR

0x03EE

0x0000

0x12

문자열을 반환합니다.

bmRequestType 필드는 데이터 전송 방향, 설명자 형식 및 받는 사람의 세 부분으로 구성된 비트맵입니다. USB 사양에 따라 bmRequestType 값은 1000 0000b(0x80)로 설정됩니다.

GET_DESCRIPTOR 요청의 경우 wValue 필드는 두 부분으로 분할됩니다. 높은 바이트는 설명자 형식을 저장하고 하위 바이트는 설명자 인덱스(descriptor index)를 저장합니다. Microsoft OS 문자열 설명자를 검색하려면 문자열 설명자(0x03)를 검색하도록 높은 바이트를 설정해야 합니다. Microsoft OS 문자열 설명자는 항상 인덱스 0xEE 저장되므로 이 문자열 인덱스는 wValue 필드의 하위 바이트에 저장되어야 합니다.

wIndex는 언어 ID를 저장하는 데 사용되지만 Microsoft OS 문자열 설명자에 대해 0으로 설정해야 합니다.

wLength 필드는 검색할 문자열 설명자의 길이를 나타내는 데 사용됩니다. 디바이스는 0x02~0xFF 유효한 범위에 응답해야 합니다.

디바이스에 해당 주소(0xEE)에 유효한 설명자가 없는 경우 요청 오류 또는 중단으로 응답합니다. 디바이스가 중단으로 응답하지 않으면 디바이스에 단일 종료 제로 재설정이 발급됩니다(알 수 없는 상태로 전환해야 하는 경우 복구).

OS 설명자의 무결성 확인

공급업체는 문자열 ID를 사용하여 정보를 저장할 수 있으므로 운영 체제는 인덱스 0xEE 저장된 문자열이 실제로 Microsoft OS 문자열 설명자인지 확인해야 합니다. 이를 확인하기 위해 다음 테스트를 수행합니다. 둘 중 하나가 실패하면 Microsoft OS 기능 설명자의 검색이 금지됩니다.

  • 공급업체가 인덱스 위치 0xEE 문자열을 저장하는 경우 운영 체제는 문자열을 검색하고 쿼리하여 Microsoft OS 문자열인지 확인합니다. 문자열의 서명 필드를 이전에 지정한 서명 필드 항목과 비교하여 확인할 수 있습니다. 일치하지 않으면 문자열의 추가 구문 분석이 방지됩니다.
  • 두 번째 테스트에는 서명 필드에 지정된 버전 번호를 기반으로 문자열 길이 확인이 포함됩니다. 지정된 버전 번호(문자열 "MSFT100")는 1.00입니다. 이는 18 바이트 문자열 설명자에 해당합니다.

Microsoft OS 문자열 설명자 제약 조건

다음 제약 조건은 Microsoft OS 문자열 설명자 및 해당 검색에 적용됩니다.

  • Microsoft OS 설명자 사양에 따라 정보를 저장하려면 디바이스에 Microsoft OS 설명자에 설명된 정보를 준수하는 Microsoft OS 문자열 설명 자가 하나만 있어야 합니다.
  • 디바이스 공급업체는 Microsoft OS 문자열 설명자의 bMS_VendorCode 필드에 있는 모든 값을 자유롭게 사용할 수 있습니다.

기능 설명자

기능 설명자는 특정 용도로 정의된 고정 형식 설명자입니다.

OS 기능 설명자 검색

Microsoft OS 기능 설명자를 검색하려면 디바이스에 특별한 GET_MS_DESCRIPTOR 요청을 발급해야 합니다. 요청의 형식은 다음과 같습니다.

표준 디바이스 요청 형식

bmRequestType bRequest wValue wIndex wLength 데이터

1100 0000b

GET_MS_DESCRIPTOR

X

기능 인덱스

길이

설명자를 반환합니다.

bmRequestType 필드는 데이터 전송 방향, 설명자 형식 및 받는 사람의 세 부분으로 구성된 비트맵이며 USB 사양에 따라 다릅니다. Microsoft OS 기능 설명자는 공급업체별 설명자이며 데이터 전송 방향은 디바이스에서 호스트로 이동합니다. 따라서 bmRequestType 값은 1100 0000b(0xC0)로 설정됩니다.

bRequest 필드는 요청의 형식을 나타내는 데 사용됩니다. Microsoft OS 기능 설명자를 검색하려면 bRequest 필드를 특수 GET_MS_DESCRIPTOR 바이트로 채워야 합니다. 이 바이트 값은 Microsoft 문자열 설명자에서 검색되는 bMS_VendorCode 표시됩니다. Microsoft OS 문자열 설명자의 검색에 대한 자세한 내용은 OS 문자열 설명자 검색을 참조하세요.

wValue 필드는 특별한 용도로 사용되며 높은 바이트와 낮은 바이트로 구분됩니다. 높은 바이트는 인터페이스 번호를 저장하는 데 사용됩니다. 이는 특히 복합 디바이스 또는 여러 인터페이스가 있는 디바이스의 경우 인터페이스별로 기능 설명자를 저장하는 데 필수적입니다. 대부분의 경우 인터페이스 0이 사용됩니다. 낮은 바이트는 페이지 번호를 저장하는 데 사용됩니다. 이 기능을 사용하면 설명자가 64KB의 크기 경계( wLength 필드의 크기로 설정된 제한)를 사용할 수 없습니다. 설명자는 처음에 0으로 설정된 페이지 값으로 페치됩니다. 전체 설명자(크기가 64KB)가 수신되면 페이지 값이 1씩 증가하며 설명자에 대한 요청이 다시 전송됩니다(이번에는 페이지 값이 증가함). 이 프로세스는 크기가 64KB 미만인 설명자가 수신될 때까지 반복됩니다. 최대 페이지 수는 255개이며 설명자 크기는 16MB로 제한됩니다.

wIndex 필드는 검색 중인 Microsoft OS 기능 설명자에 대한 기능 인덱스 번호를 저장합니다. Microsoft는 이 Microsoft OS 기능 설명자 및 인덱스 목록을 유지 관리합니다. Microsoft OS 기능 설명자에 대한 자세한 내용은 Microsoft OS 설명자를 참조하세요.

wLength 필드는 가져올 설명자의 길이를 지정합니다. 설명자가 wLength 필드에 명시된 바이트 수보다 긴 경우 설명자의 초기 바이트만 반환됩니다. wLength 필드에 지정된 값보다 짧은 경우 짧은 패킷이 반환됩니다.

특정 OS 설명자가 없는 경우 디바이스는 요청 오류 또는 중단을 실행합니다.

Microsoft OS 기능 설명자 제약 조건

다음 제약 조건은 Microsoft OS 기능 설명자 및 해당 검색에 적용됩니다.

  • 모든 Microsoft OS 기능 설명자가 정의되고 표준화됩니다. 공급업체는 Microsoft의 직접적인 동의 없이 Microsoft OS 기능 설명자를 수정, 추가 또는 만들 수 없습니다.
  • 모든 Microsoft OS 기능 설명자에는 크기 및 버전 번호가 포함됩니다. 이러한 값은 항상 운영 체제에 올바른 정보를 보고해야 합니다.
  • 디바이스에는 펌웨어에 둘 이상의 Microsoft OS 기능 설명자가 포함될 수 있습니다.
  • 일부 Microsoft OS 기능 설명자는 인터페이스별 수준에 저장되고 다른 설명자는 디바이스에 고유합니다. 디바이스 수준 Microsoft OS 기능 설명자는 wValue 필드의 상위 바이트를 0으로 설정해야 합니다.

기능 설명자의 구조

MBIM을 지원할 수 있는 것으로 식별하려면 디바이스가 정의된 기능 설명자 중 하나인 확장 구성 설명자도 지원해야 합니다. 이 설명자의 구조는 다음과 같습니다.

헤더 섹션

헤더 섹션은 확장된 구성 설명자의 나머지 부분에 대한 정보를 저장합니다. dwLength 필드에는 전체 확장 구성 설명자의 길이가 포함됩니다. 헤더 섹션에는 처음에 1.00(0100H)으로 설정되는 버전 번호도 포함되어 있습니다. 이 설명자의 향후 수정 내용은 이후 단계에서 릴리스될 수 있습니다. 이후 버전의 확장 구성 설명자는 헤더 섹션의 항목 수를 늘려야 할 수도 있으므로 이 숫자가 디바이스에 정확하게 저장되고 운영 체제에서 읽는지 확인하세요.

확장 구성 설명자 헤더 섹션

Offset 필드 Size Description

0

dwLength

4

서명되지 않은 DWORD

길이 필드는 확장된 구성 설명자의 길이(바이트)를 설명합니다.

4

bcdVersion

2

BCD

이진 코딩된 10진수의 확장된 구성 설명자 릴리스 번호(예: 버전 1.00은 0100H)입니다.

6

wIndex

2

WORD

수정됨 = 0x0004

8

bCount

1

BYTE

헤더 섹션 뒤에 있는 총 함수 섹션 수 = 0x01

9

RESERVED

7

RESERVED

함수 섹션

함수 섹션에서는 두 가지 중요한 정보를 제공합니다. 유사한 용도를 제공하는 연속 인터페이스를 함수 그룹으로 그룹화하고 각 함수에 대해 호환되고 하위 호환 가능한 ID를 제공합니다.

다음은 MBIM 디바이스에서 사용해야 하는 값을 포함하여 함수 섹션의 형식입니다.

확장 구성 설명자 함수 섹션

Offset 을(를) 필드 Size Description

0

bFirstInterfaceNumber

1

Byte

이 함수의 시작 인터페이스 번호 = 0x00

1

bInterfaceCount

1

Byte

이 함수에서 포함해야 하는 총 인터페이스 수 = 0x01

2

compatibleID

8

바이트

호환 가능한 ID

10

subCompatibleID

8

바이트

하위 호환 ID

18

RESERVED

6

RESERVED = 0

사용자 지정 속성 섹션의Offset이 0으로 다시 설정되었습니다. 확장 구성 설명자의 시작 부분에서 필드의 오프셋을 계산하려면 앞에 오는 섹션의 길이를 추가합니다.

MBIM 함수를 노출하는 구성을 기반으로 호환되는 및 하위 호환 가능한 ID

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 은 MBIM 함수를 노출하는 구성의 USB 구성 설명자 내의 bConfiguration 값을 나타냅니다. bConfiguration 은 CDROM 함수만 노출하는 기본 구성이므로 1일 수 없습니다. bConfiguration 은 4보다 클 수 없습니다. 즉, 처음 4개 구성 내에서 MBIM 함수를 노출해야 합니다.
  • compatibleID는 모든 구성에서 동일하게 유지됩니다. subcompatibleID는 구성에 따라 변경됩니다.

예제

이 표에서는 샘플 다중 구성 시나리오를 보여줍니다. 표에는 각 구성에서 사용할 수 있는 함수와 각 구성에 대해 운영 체제의 여러 버전이 수행하는 작업이 나열되어 있습니다.

다중 구성 모바일 광대역 디바이스의 예

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

노출된 함수

CDROM

SD

CD-ROM

SD

NCM1.0

모뎀

TV

GPS

FP

PC/SC 스마트 카드

음성

Diag

CD-ROM

SD

MBIM

CD-ROM

SD

NCM2.0

모뎀

TV

GPS

FP

PC/SC 스마트 카드

음성

Diag

다음 표에서는 이전 샘플의 다중 구성 시나리오에 대한 Microsoft OS 문자열 설명자 및 Microsoft OS 확장 구성 기능 설명자에서 사용하는 값을 보여 줍니다.

다중 구성 모바일 광대역 디바이스의 예

필드 길이(바이트)

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

예제 Microsoft OS 확장 구성 기능 설명자 헤더

Offset 필드 Size

0

dwLength

4

16

4

bcdVersion

2

0100H

6

wIndex

2

0x0004

8

bCount

1

1

9

RESERVED

7

예제 Microsoft OS 확장 구성 기능 설명자 함수

Offset² 필드 Size

0

bFirstInterfaceNumber

1

1

bInterfaceCount

1

2

compatibleID

8

10

subCompatibleID

8

18

RESERVED

6

사용자 지정 속성 섹션의 ²Offset이 0으로 다시 설정되었습니다. 확장 구성 설명자의 시작 부분에서 필드의 오프셋을 계산하려면 앞에 오는 섹션의 길이를 추가합니다.