Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskriptor OS Microsoft dipecah menjadi segmen berikut:
- Satu pengidentifikasi string OS Microsoft
- Satu atau beberapa deskriptor fitur Microsoft OS
Untuk mendukung deskriptor OS, perangkat harus mengimplementasikan deskriptor string. Deskriptor String
Deskriptor string OS Microsoft adalah string yang disimpan di indeks string 0xEE. Format string ini didefinisikan dengan baik.
Microsoft OS String Descriptor digunakan untuk mencapai tujuan berikut
- Kehadiran deskriptor string OS Microsoft menunjukkan kepada sistem operasi bahwa perangkat memiliki informasi yang disematkan di dalamnya, dalam bentuk deskriptor fitur Microsoft OS.
- Deskriptor string sistem operasi Microsoft terdapat bidang tanda tangan tersemat yang digunakan untuk membedakannya dari string acak yang mungkin ada pada perangkat di indeks string 0xEE.
- Deskriptor string OS Microsoft juga memiliki nomor versi yang disematkan yang memungkinkan revisi deskriptor OS Microsoft di masa mendatang.
Hanya satu deskriptor string OS Microsoft yang disimpan di perangkat. Bagian berikut menjelaskan struktur deskriptor string OS Microsoft dan prosedur pengambilannya. Struktur string OS
Berikut adalah struktur deskriptor string:
Struktur Deskriptor String
| Lapangan | Panjang (Byte) | Nilai | Deskripsi |
|---|---|---|---|
bLength |
1 |
0x12 |
Panjang deskriptor |
bDescriptorType |
1 |
0x03 |
Deskriptor rantai |
qwSignature |
14 |
"MSFT100" |
Bidang tanda tangan (4D00530046005400310030003000) |
bMS_VendorCode |
1 |
Kode Vendor |
Kode vendor untuk mengambil deskriptor fitur OS lainnya |
bPad |
1 |
0x00 |
Bidang Pad |
Struktur deskriptor string OS Microsoft telah ditentukan untuk versi 1.00 dan memiliki panjang keseluruhan 18 byte. Nomor versi deskriptor string OS Microsoft tercantum di bidang qwSignature. Informasi yang disimpan di bidang bMS_VendorCode harus berupa nilai byte tunggal. Ini akan digunakan untuk mengambil deskriptor fitur Microsoft OS, dan nilai byte ini digunakan di bidang bmRequestType yang dijelaskan sebagai berikut:
Memperoleh pengidentifikasi string OS
Untuk mengambil informasi yang disimpan dalam string, permintaan GET_DESCRIPTOR standar harus dikeluarkan ke perangkat. Berikut adalah format permintaan:
Permintaan String Get_Descriptor Standar
| bmRequestType | bRequest | wValue | wIndex | wLength | Data |
|---|---|---|---|---|---|
1000 0000b |
DAPATKAN_DESKRIPTOR |
0x03EE |
0x0000 |
0x12 |
Mengembalikan string |
Bidang bmRequestType adalah bitmap yang terdiri dari tiga bagian—arah transfer data, jenis deskriptor, dan penerima. Menurut spesifikasi USB, nilai bmRequestType diatur ke 1000 0000b (0x80).
Untuk permintaan GET_DESCRIPTOR, bidang wValue dibagi menjadi dua bagian. Byte tinggi menyimpan jenis deskriptor dan byte rendah menyimpan indeks deskriptor. Untuk mengambil deskriptor string dari OS Microsoft, byte yang lebih tinggi harus diatur untuk mengambil deskriptor string—0x03. Karena deskriptor string OS Microsoft selalu disimpan pada indeks 0xEE, indeks string ini harus disimpan di byte yang lebih rendah dari bidang wValue.
wIndex digunakan untuk menyimpan ID bahasa, tetapi harus diatur ke nol untuk deskriptor string OS Microsoft.
Bidang wLength digunakan untuk menunjukkan panjang deskriptor string yang akan diambil. Perangkat harus merespons pada rentang nilai yang valid dari 0x02 hingga 0xFF.
Jika perangkat tidak memiliki pendeskripsi yang valid di alamat yang sesuai (0xEE), perangkat akan merespons dengan kesalahan permintaan atau stall. Ketika perangkat tidak merespons dengan stagnan, reset nol berujung tunggal akan dikeluarkan ke perangkat (untuk memulihkannya, jika memasuki keadaan yang tidak diketahui).
Memverifikasi integritas deskriptor OS
Karena vendor diizinkan untuk menggunakan ID string apa pun untuk menyimpan informasi, sistem operasi harus memverifikasi bahwa string yang disimpan dalam indeks 0xEE memang deskriptor string OS Microsoft. Untuk memverifikasi ini, tes berikut akan dilakukan. Kegagalan keduanya akan menghambat pengambilan deskriptor fitur Microsoft OS.
- Jika vendor menyimpan string di lokasi indeks 0xEE, sistem operasi akan mengambil string dan mengkuerinya untuk melihat apakah itu adalah string OS Microsoft. Ini dapat diverifikasi dengan membandingkan bidang tanda tangan dalam string dengan entri bidang tanda tangan yang ditentukan sebelumnya. Ketidakcocokan akan mencegah penguraian string lebih lanjut.
- Pengujian kedua akan menyertakan verifikasi panjang string berdasarkan nomor versi yang ditentukan di bidang tanda tangan. Nomor versi yang ditentukan (dalam string "MSFT100") adalah 1,00. Ini sesuai dengan deskriptor string 18-byte.
batasan deskriptor string Microsoft OS
Batasan berikut berlaku untuk deskriptor string OS Microsoft dan pengambilannya:
- Untuk menyimpan informasi sesuai dengan spesifikasi deskriptor Microsoft OS, perangkat harus memiliki satu dan hanya deskriptor string OS Microsoft yang mematuhi informasi yang diuraikan dalam Microsoft OS Descriptors.
- Vendor perangkat bebas menggunakan nilai apa pun di bidang bMS_VendorCode di deskriptor string OS Microsoft
Pendeskripsi Fitur
Deskriptor fitur adalah deskriptor format tetap yang telah ditentukan untuk tujuan tertentu.
Mengambil deskriptor fitur sistem operasi
Untuk mengambil pendeskripsi fitur Microsoft OS, permintaan khusus GET_MS_DESCRIPTOR harus dikirimkan ke perangkat. Berikut adalah format permintaan:
format permintaan perangkat standar
| bmRequestType | bRequest | wValue | wIndex | wLength | Data |
|---|---|---|---|---|---|
1100 0000b |
DAPATKAN_MS_DESCRIPTOR |
X |
Indeks Fitur |
Panjang |
Mengembalikan deskriptor |
Bidang bmRequestType adalah bitmap yang terdiri dari tiga bagian—arah transfer data, jenis deskriptor, dan penerima—dan sesuai dengan spesifikasi USB. Pendeskripsi fitur Microsoft OS adalah deskriptor khusus vendor dan arah transfer data berasal dari perangkat ke host. Oleh karena itu, nilai bmRequestType diatur ke 1100 0000b (0xC0).
Bidang bRequest digunakan untuk menunjukkan format permintaan. Untuk mengambil pendeskripsi fitur Microsoft OS, bidang bRequest harus diisi dengan byte GET_MS_DESCRIPTOR khusus. Nilai byte ini ditunjukkan oleh bMS_VendorCode, yang diambil dari deskriptor string Microsoft. Untuk informasi selengkapnya mengenai cara mengambil deskriptor string OS Microsoft, lihat Mengambil deskriptor string OS.
Bidang wValue dimanfaatkan secara khusus dan dipecah menjadi byte atas dan byte bawah. Byte tinggi digunakan untuk menyimpan nomor antarmuka. Ini penting untuk menyimpan deskriptor fitur untuk setiap antarmuka, terutama untuk perangkat komposit, atau perangkat dengan beberapa antarmuka. Dalam kebanyakan kasus, antarmuka 0 akan digunakan. Byte rendah digunakan untuk menyimpan nomor halaman. Fitur ini mencegah deskriptor memiliki batas ukuran 64 KB (batas yang ditetapkan oleh ukuran bidang wLength). Sebuah deskriptor akan diambil dengan nilai halaman yang awalnya diatur ke nol. Jika sebuah deskriptor lengkap (ukuran 64 KB) diterima, nilai halaman akan dinaikkan satu dan permintaan untuk deskriptor akan dikirim lagi (dengan nilai halaman yang telah dinaikkan). Proses ini akan diulang hingga deskriptor dengan ukuran kurang dari 64 KB diterima. Perhatikan bahwa jumlah maksimum halaman adalah 255, yang menempatkan batas 16 MB pada ukuran deskriptor.
Bidang wIndex menyimpan nomor indeks fitur untuk deskriptor fitur Microsoft OS yang diambil. Microsoft akan mempertahankan daftar deskriptor dan indeks fitur Microsoft OS ini. Untuk mempelajari selengkapnya tentang deskriptor fitur Microsoft OS, lihat Microsoft OS Descriptors.
Bidang wLength menentukan panjang deskriptor yang akan diambil. Jika deskriptor lebih panjang dari jumlah byte yang dinyatakan dalam bidang wLength, hanya byte awal deskriptor yang dikembalikan. Jika lebih pendek dari nilai yang ditentukan dalam bidang wLength, paket pendek dikembalikan.
Jika deskriptor OS tertentu tidak ada, perangkat akan mengeluarkan kesalahan permintaan atau stall.
batasan pendeskripsi fitur Microsoft OS
Batasan berikut berlaku untuk deskriptor fitur Microsoft OS dan pengambilannya.
- Semua deskriptor fitur Microsoft OS didefinisikan dan distandarkan. Vendor tidak diizinkan untuk memodifikasi, menambahkan, atau membuat deskriptor fitur Microsoft OS tanpa persetujuan langsung dari Microsoft.
- Semua deskriptor fitur Microsoft OS akan memiliki ukuran dan nomor versi yang disematkan di dalamnya. Nilai-nilai ini harus selalu melaporkan informasi yang benar ke sistem operasi.
- Perangkat dapat memiliki lebih dari satu deskriptor fitur Microsoft OS yang disematkan di firmware-nya.
- Beberapa deskriptor fitur Microsoft OS disimpan pada tingkat per antarmuka, sementara yang lain unik untuk perangkat. Deskriptor fitur Microsoft OS pada level perangkat harus mengeset byte tinggi dari bidang wValue sebagai nol.
Struktur pendeskripsi fitur
Untuk mengidentifikasi dirinya sebagai mampu mendukung MBIM, perangkat juga harus mendukung deskriptor konfigurasi yang diperluas, yang merupakan salah satu deskriptor fitur yang ditentukan. Struktur deskriptor ini adalah sebagai berikut.
bagian Header
Bagian header menyimpan informasi tentang sisa deskriptor konfigurasi yang diperluas. Bidang dwLength berisi panjang seluruh deskriptor konfigurasi yang diperpanjang. Bagian header juga berisi nomor versi, yang awalnya akan diatur ke 1,00 (0100H). Revisi deskriptor ini di masa mendatang dapat dirilis pada tahap selanjutnya. Perhatikan bahwa versi deskriptor konfigurasi yang diperluas di masa mendatang mungkin juga perlu meningkatkan jumlah entri di bagian header, jadi harap verifikasi bahwa nomor ini disimpan secara akurat di perangkat dan dibaca oleh sistem operasi.
bagian awal deskriptor konfigurasi yang diperluas
| Offset | Lapangan | Ukuran | Nilai | Deskripsi |
|---|---|---|---|---|
0 |
dwLength |
4 |
DWORD tidak ditandatangani |
Bidang panjang menjelaskan panjang deskriptor konfigurasi yang diperluas, dalam byte. |
4 |
bcdVersion |
2 |
BCD |
Nomor versi deskriptor konfigurasi yang diperluas dalam Kode Biner Desimal (misalnya, versi 1.00 adalah 0100H). |
6 |
wIndex |
2 |
KATA |
Diperbaiki = 0x0004 |
8 |
bCount |
1 |
BYTE |
Jumlah total bagian fungsi yang mengikuti bagian header = 0x01 |
9 |
DIPERUNTUKKAN |
7 |
DIPERUNTUKKAN |
bagian Fungsi
Bagian fungsi menyediakan dua informasi penting. Ini mengelompokkan antarmuka berturut-turut yang melayani tujuan serupa ke dalam grup fungsi, dan menyediakan ID yang kompatibel dan subkompatibel untuk setiap fungsi.
Berikut adalah format bagian fungsi, termasuk nilai yang harus digunakan oleh perangkat MBIM:
bagian fungsi deskriptor konfigurasi yang diperluas
| Offset¹ | Lapangan | Ukuran | Nilai | Deskripsi |
|---|---|---|---|---|
0 |
bFirstInterfaceNumber |
1 |
Byte |
Nomor antarmuka awal untuk fungsi ini = 0x00 |
1 |
bInterfaceCount |
1 |
Byte |
Jumlah total Antarmuka yang harus disertakan dari fungsi ini = 0x01 |
2 |
compatibleID |
8 |
Byte |
ID yang Kompatibel |
10 |
subCompatibleID |
8 |
Byte |
ID Subkompretibel |
18 |
DIPERUNTUKKAN |
6 |
RESERVED = 0 |
¹Offset dari bagian properti kustom telah direset ke nol. Untuk menghitung offset bidang dari awal deskriptor konfigurasi yang diperluas, tambahkan panjang bagian yang mendahuluinya.
ID yang Kompatibel dan Subkompatibel berdasarkan konfigurasi yang memaparkan fungsi MBIM
| konfigurasiB | 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 merujuk pada nilai bConfiguration dalam deskriptor konfigurasi USB yang mengekspos fungsi MBIM. bConfiguration tidak boleh 1 karena konfigurasi default hanya mengekspos fungsi CDROM. bConfiguration tidak boleh lebih besar dari 4; artinya, fungsi MBIM harus diekspos dalam empat konfigurasi pertama.
- compatibleID tetap sama untuk semua konfigurasi. SubcompatibleID berubah berdasarkan konfigurasi
Contoh
Tabel ini memperlihatkan contoh skenario multi-konfigurasi. Tabel mencantumkan fungsi yang tersedia di setiap konfigurasi dan tindakan yang diambil oleh versi sistem operasi yang berbeda untuk masing-masing konfigurasi ini:
Contoh perangkat broadband seluler yang dapat dikonfigurasi multi
| konfigurasiB | 1 (Windows-7-Konfigurasi) | 2 (IHV-NCM-1.0-Configuration) | 3 (Konfigurasi-Windows-8) | 3 (IHV-NCM-2.0-Configuration) |
|---|---|---|---|---|
Fungsi yang diungkap |
CDROM Sekolah Dasar |
CD-ROM Sekolah Dasar NCM1.0 Modem TELEVISI GPS FP Kartu pintar PC/SC Voice Diagnosis |
CD-ROM Sekolah Dasar MBIM |
CD-ROM Sekolah Dasar NCM2.0 Modem TELEVISI GPS FP Kartu pintar PC/SC Voice Diagnosis |
Tabel berikut menunjukkan nilai yang digunakan oleh deskriptor string OS Microsoft dan deskriptor fitur konfigurasi diperluas Microsoft OS untuk skenario multi-konfigurasi sampel sebelumnya.
Contoh perangkat broadband seluler yang dapat dikonfigurasi multi
| Lapangan | Panjang (Byte) | Nilai |
|---|---|---|
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 |
Contoh header deskriptor fitur konfigurasi diperluas Microsoft OS
| Offset | Lapangan | Ukuran | Nilai |
|---|---|---|---|
0 |
dwLength |
4 |
16 |
4 |
bcdVersion |
2 |
0100H |
6 |
wIndex |
2 |
0x0004 |
8 |
bCount |
1 |
1 |
9 |
DIPERUNTUKKAN |
7 |
Contoh fungsi pendeskripsi fitur konfigurasi diperluas Microsoft OS
| Offset² | Lapangan | Ukuran | Nilai |
|---|---|---|---|
0 |
bFirstInterfaceNumber |
1 |
|
1 |
bInterfaceCount |
1 |
|
2 |
compatibleID |
8 |
|
10 |
subCompatibleID |
8 |
|
18 |
DIPERUNTUKKAN |
6 |
²Offset dari bagian properti kustom telah direset ke nol. Untuk menghitung offset bidang dari awal deskriptor konfigurasi yang diperluas, tambahkan panjang bagian yang mendahuluinya.