Bagikan melalui


Arsitektur Pengelola Perangkat Windows Media

Pengelola Perangkat Media Windows memungkinkan aplikasi atau plug-in untuk berkomunikasi dengan perangkat. Aplikasi dapat meminta metadata perangkat, menghitung dan menjelajahi perangkat yang terpasang, dan mengirim atau menerima objek (folder, file, daftar putar, dan sebagainya). Windows Media Device Manager menyediakan satu API untuk aplikasi panggilan, apa pun jenis perangkat yang dipanggil (MTP atau Kelas Penyimpanan Massal, penyedia layanan yang dibangun di versi 10 atau penyedia layanan yang dibangun pada versi Windows Media Device Manager yang lebih lama).

Windows Media Device Manager bertindak sebagai pertujukan untuk tiga komponen utama sistem: aplikasi, yang membuat permintaan (untuk informasi, membaca atau menulis data, dan sebagainya); penyedia konten aman, yang merupakan komponen yang menangani komunikasi dengan file yang dilindungi DRM; dan penyedia layanan, yang menerima permintaan dari aplikasi dan berkomunikasi dengan perangkat untuk melakukan permintaan ini. Aplikasi dan penyedia layanan dibangun di Windows Media Device Manager SDK.

Diagram berikut menunjukkan bagaimana aplikasi desktop berkomunikasi dengan perangkat menggunakan Windows Media Device Manager 11.

diagram memperlihatkan aplikasi yang berkomunikasi dengan empat jenis perangkat yang berbeda.

Diagram sebelumnya menunjukkan aplikasi yang berkomunikasi dengan empat jenis perangkat yang berbeda, masing-masing dengan penyedia layanannya sendiri. Setiap penyedia layanan dirancang untuk berkomunikasi dengan jenis perangkat tertentu; diagram ini menunjukkan tiga penyedia layanan yang disediakan Microsoft (driver kelas generik untuk perangkat Kelas Penyimpanan Massal, perangkat RAPI, dan perangkat MTP), serta penyedia layanan kustom untuk perangkat milik yang dibangun oleh pihak ketiga. Ketika perangkat tersambung, Windows Media Device Manager membuat instans penyedia layanan yang terdaftar untuk perangkat tersebut. Penyedia layanan mendapatkan permintaan dari aplikasi melalui antarmuka Windows Media Device Manager yang mereka terapkan, menggunakan driver yang sesuai untuk berkomunikasi dengan perangkat, dan mengembalikan hasil yang sesuai. Komunikasi antara penyedia layanan dan perangkat berada di luar domain Windows Media Device Manager.

Penyedia layanan tidak terlihat oleh aplikasi; aplikasi hanya melihat daftar "perangkat" karena Windows Media Device Manager mengekspos serangkaian metode dan antarmuka standar untuk semua perangkat. Jika produsen membuat penyedia layanan kustom, produsen harus menangani semua metode Windows Media Device Manager standar jika aplikasi dapat menggunakan perangkat.

Diagram ini juga menunjukkan modul penyedia konten aman (SCP). Modul ini bertanggung jawab untuk menangani konten yang dilindungi manajemen hak digital (DRM). Microsoft menyediakan modul SCP yang dapat menangani file WMA dan WMV yang dilindungi DRM. Jika aplikasi atau perangkat berniat menangani format lain yang dilindungi, aplikasi atau perangkat harus menyediakan modul SCP-nya sendiri. Baik aplikasi maupun penyedia layanan tidak menangani SCP secara langsung.

Aplikasi dan penyedia layanan dibangun di Windows Media Device Manager, yang merutekan panggilan antara aplikasi dan penyedia layanan yang sesuai untuk perangkat; penyedia layanan bertanggung jawab untuk berkomunikasi langsung dengan perangkat. Windows Media Device Manager melakukan beberapa tindakan itu sendiri (seperti menghitung perangkat yang terhubung, panggilan perutean, dan menangani verifikasi komponen); namun, sebagian besar pekerjaan dilakukan oleh penyedia layanan, yang menerima permintaan dari aplikasi dan berkomunikasi dengan perangkat.

Aplikasi yang dibangun di Windows Media Device Manager dapat berkomunikasi dengan perangkat dan penyedia layanan yang dibangun di versi Windows Media Device Manager yang lebih lama; namun, perangkat lama ini akan dijalankan melalui komponen Seri 9 (tidak ditampilkan), dan tidak akan mendukung fitur terbaru, terutama teknologi manajemen hak digital yang lebih canggih.

Arsitektur Perangkat

Diagram berikut menunjukkan hierarki perangkat dan penyimpanan yang disederhanakan seperti yang dilihat oleh aplikasi menggunakan Windows Media Device Manager.

diagram memperlihatkan penyimpanan pada perangkat.

Diagram sebelumnya menunjukkan versi flash drive yang terhubung yang disederhanakan, seperti yang terlihat oleh aplikasi Windows Media Device Manager. Flash drive memiliki atribut dan properti, seperti nomor seri dan konfigurasi format yang didukung. Anak langsung dari perangkat flash adalah objek penyimpanan akar, yang berisi folder, yang berisi gambar dan lagu itu sendiri.

Aplikasi menghitung daftar perangkat yang terpasang dengan memanggil metode enumerasi yang diekspos oleh antarmuka IWMDeviceManager akar. Perangkat diwakili oleh antarmuka IWMDMDevice (atau turunan). Antarmuka ini memaparkan metode untuk mengambil nama perangkat, kemampuan format, nomor seri, dan sebagainya, serta metode yang menghitung penyimpanan pada perangkat. Di Windows Media Device Manager, penyimpanan adalah jenis objek apa pun pada perangkat, baik itu blob data yang sebenarnya atau tidak. Misalnya: file audio, file teks, folder, daftar putar yang disimpan sebagai file, dan daftar putar yang disimpan sebagai metadata semuanya dianggap sebagai penyimpanan, meskipun folder dan item metadata mungkin tidak mewakili file fisik. Jenis (atau format) penyimpanan dapat diambil dengan memanggil GetAttributes (atau GetMetadata, meminta format penyimpanan).

Penyimpanan pada perangkat disimpan secara hierarkis, dan semua perangkat memiliki penyimpanan root. Setiap penyimpanan dapat menampung nol atau lebih objek anak, yang dijumlahkan dengan memanggil metode IWMDMStorage::EnumStorage penyimpanan tersebut.

Perhatikan bahwa setiap penyimpanan dalam diagram memiliki atribut dan metadata yang terkait dengannya (tidak semua nilai ditampilkan). Atribut sederhana, informasi Boolean sering menjelaskan informasi manajemen atau navigasi (seperti "memiliki folder" atau "dapat menghapus"), sedangkan metadata dapat berupa nilai string, angka, atau informasi kompleks (seperti kemampuan penyajian). Atribut dijelaskan oleh serangkaian bendera yang cukup terbatas yang ditentukan oleh SDK dan diambil dengan memanggil IWMDMStorage::GetAttributes atau IWMDMStorage2::GetAttributes2. Nilai metadata diambil dengan nama unik; SDK menentukan sejumlah nilai metadata yang harus didukung perangkat, tetapi perangkat dapat menentukan konstanta metadata mereka sendiri. Namun, jika perangkat atau penyedia layanan menentukan konstanta metadata baru, aplikasi tidak akan dapat meminta atau mengatur nilai ini kecuali pengembang aplikasi mengetahui konstanta baru ini. Penyedia layanan harus mendukung IWMDMStorage3 atau yang lebih baru untuk mendukung pengambilan atau pengaturan metadata. Untuk informasi selengkapnya, lihat Mendapatkan dan Mengatur Metadata dan Atribut.

Penyedia Layanan

Penyedia layanan bertindak sebagai perantara antara aplikasi dan perangkat. Penyedia layanan tidak terlihat oleh pengembang aplikasi, sehingga pengembang aplikasi tidak perlu tahu apa pun tentang mengembangkan penyedia layanan. Namun, penyedia layananlah yang melakukan pekerjaan berkomunikasi dengan perangkat.

Penyedia layanan adalah COM DLL yang dibangun di Windows Media Device Manager yang menerima permintaan dari aplikasi dan berkomunikasi dengan perangkat untuk melakukannya. Komunikasi dengan aplikasi desktop dimediasi oleh Windows Media Device Manager; komunikasi dengan perangkat berada di bawah kendali penyedia layanan.

Penyedia layanan menerima permintaan dari aplikasi untuk menghitung konten perangkat, permintaan kemampuan perangkat, permintaan untuk membaca atau menulis data, dan sebagainya. Ini harus mengetahui desain perangkat dengan cukup baik sehingga dapat mengirim perintah dalam format dan protokol yang tepat. Ini juga harus dapat menyembunyikan persyaratan khusus perangkat, seperti ekstensi file yang diperlukan untuk daftar putar, sehingga aplikasi tidak perlu mengetahui persyaratan ini untuk menggunakan perangkat.

Microsoft menyediakan sejumlah penyedia layanan untuk jenis perangkat standar, termasuk perangkat MTP generik, perangkat Kelas Penyimpanan Massal, dan perangkat RAPI. Satu-satunya alasan perancang perangkat harus membuat penyedia layanan kustom adalah jika perangkat memiliki beberapa persyaratan penyimpanan data tertentu atau tidak biasa yang tidak ditangani penyedia layanan standar—misalnya, jika file harus disimpan di lokasi tertentu dan sistem operasi perangkat tidak menanganinya secara otomatis.

Ketika perangkat terhubung ke komputer, sistem operasi membuat satu instans penyedia layanan yang sesuai untuk setiap aplikasi Windows Media Device Manager. Jika aplikasi Windows Media Device Manager kedua dimulai, instans kedua penyedia layanan akan dimuat. Namun, setiap penyedia layanan dapat menangani beberapa perangkat. Diagram berikut mengilustrasikan ini.

diagram memperlihatkan dua perangkat mtp yang berkomunikasi dengan dua aplikasi.

Diagram sebelumnya menunjukkan dua aplikasi berbeda yang berkomunikasi dengan dua perangkat MTP. Perangkat menggunakan kelas penyedia layanan yang sama, tetapi setiap aplikasi memiliki instans sendiri dari penyedia layanan yang sama. Setiap instans penyedia layanan berkomunikasi dengan perangkat. Instans penyedia layanan yang berbeda tidak saling menyadari.

Banyak metode aplikasi memiliki metode penyedia layanan bernama yang sesuai. Ketika aplikasi memanggil metode , Windows Media Device Manager merutekan panggilan ke metode yang sesuai pada penyedia layanan (meskipun mungkin melakukan beberapa tindakan internal tambahan terlebih dahulu). Misalnya, ketika aplikasi memanggil IWMDMDevice3::GetProperty, Windows Media Device Manager merutekan panggilan ini ke implementasi penyedia layanan IMDSPDevice3::GetProperty. (Sebagian besar antarmuka aplikasi dimulai dengan IWMDM, dan antarmuka penyedia layanan yang sesuai dimulai dengan IMDSP). Penyedia layanan diharapkan untuk menangani panggilan metode ini dan mengembalikan hasil yang sesuai.

Aplikasi tidak pernah menjelajahi atau berkomunikasi dengan perangkat secara langsung (kecuali jika memanggil IWMDMDevice3::D eviceIoControl atau IWMDMStorage::SendOpaqueCommand); aplikasi berkomunikasi dengan penyedia layanan, yang harus mewakili perangkat dengan cara yang paling logis dan sederhana. Ketika aplikasi meminta informasi tentang perangkat, atau menghitung objek pada perangkat, penyedia layanan meminta perangkat dengan cara yang sesuai dan memperoleh dan mengembalikan informasi yang sesuai. Ini dapat mengekspos organisasi file pada perangkat secara berbeda dari bagaimana file disimpan secara fisik di perangkat, jika itu sesuai. Namun ia mengekspos perangkat, itu harus dengan cara yang konsisten dan logis, untuk memungkinkan aplikasi menemukan apa yang dibutuhkan dan menangani perintah yang dikirimnya. Penyedia layanan yang baik akan menyembunyikan kekhasan khusus perangkat—misalnya, jika perangkat secara fisik menyimpan daftar putar sebagai file dengan ekstensi file kustom, penyedia layanan harus menambahkan ekstensi tersebut secara otomatis saat aplikasi membuat daftar putar di perangkat; seharusnya tidak mengharapkan aplikasi mengetahui ekstensi yang tepat saat membuat objek daftar putar.

Penyedia layanan berjalan di dalam proses aplikasi panggilan. Satu-satunya pengecualian untuk ini adalah penyedia layanan MTP, yang berjalan dalam prosesnya sendiri. Karena itu, ada beberapa risiko bahwa penyedia layanan yang diblokir akan menyebabkan aplikasi panggilan diblokir. Oleh karena itu, penyedia layanan harus dirancang agar kuat dan mencegah pemblokiran, dan aplikasi harus dirancang untuk menghindari mengulur waktu jika panggilan metode tertentu tidak kembali dengan cepat.

Persiapan