Menjelajahi Perangkat
Menjelajahi perangkat mirip dengan menjelajahi drive disk. Semua objek pada perangkat disebut penyimpanan . Penyimpanan dapat berupa file, folder, atau objek abstrak (seperti daftar putar) pada perangkat. Anda harus memeriksa atribut dan metadata penyimpanan (jika didukung) untuk memahami jenis penyimpanannya. Penyimpanan diatur secara hierarkis pada perangkat; setiap penyimpanan memiliki tepat satu induk, dan semua penyimpanan pada akhirnya turun dari satu penyimpanan perangkat akar, biasanya bernama "\".
Langkah-langkah berikut menjelaskan cara menjelajahi perangkat:
- Dapatkan antarmuka IWMDMDevice perangkat seperti yang dijelaskan dalam Enumerasi Perangkat.
- Panggil IWMDMDevice::EnumStorage untuk mengambil antarmukaIWMDMEnumStorage. Antarmuka ini digunakan untuk mendapatkan semua objek anak dari penyimpanan yang memberikan antarmuka ini. Ketika mendapatkan antarmuka ini dari perangkat, seperti yang kita ada di sini, antarmuka ini hanya akan menyimpan satu penyimpanan: penyimpanan perangkat akar.
- Panggil IWMDMEnumStorage::Next dengan hitungan 1 untuk mengambil antarmukaIWMDMStorageuntuk penyimpanan perangkat root. (Anda tidak dapat meminta lebih dari satu anak dari perangkat.)
- Periksa semua penyimpanan pada perangkat dengan memanggil IWMDMStorage::EnumStorage secara rekursif lalu IWMDMEnumStorage::Next untuk mendapatkan anak dari penyimpanan. Untuk melihat apakah penyimpanan memiliki anak untuk menghindari panggilan ke EnumStorage dan Next, Anda dapat memanggil IWMDMStorage::GetAttributes untuk memeriksa bendera WMDM_STORAGE_ATTR_HAS_FILES atau WMDM_STORAGE_ATTR_HAS_FOLDERS. Untuk informasi selengkapnya tentang cara mendapatkan properti penyimpanan, lihat Mendapatkan dan Mengatur Metadata dan Atribut dan Mendapatkan dan Mengatur Metadata dan Atribut di Aplikasi.
Windows Media Device Manager tidak mengekspos sekumpulan folder standar untuk menyimpan media dengan jenis tertentu (misalnya, folder "Daftar Putar Saya" untuk daftar putar). Setiap perangkat memiliki sistem file yang unik, dan Anda harus memutuskan tempat yang sesuai untuk mencari, atau mengirim, file tertentu.
Nota
Windows Explorer bisa menampilkan folder virtual yang sebenarnya tidak ada pada perangkat. Contoh folder virtual adalah folder "Media" dan "Data" yang ditampilkan untuk perangkat MTP. Folder ini dibuat oleh Windows untuk membuat unduhan lebih sederhana bagi pengguna akhir; mereka tidak benar-benar ada di perangkat. Aplikasi Anda tidak boleh bergantung pada menemukan jenis folder umum ini. Sebaliknya, Windows Explorer mungkin tidak menampilkan beberapa folder atau objek yang ada pada perangkat (misalnya, daftar putar).
Kode contoh C++ berikut menunjukkan eksplorasi rekursif perangkat. Ini menggunakan dua fungsi:
- ExploreDevice, fungsi permulaan yang menerima penunjuk perangkat dan mendapatkan penunjuk ke enumerator induk untuk perangkat tersebut.
- RecursiveExploreStorage, yang dipanggil untuk menjelajahi perangkat secara rekursif.
// Get the root enumerator and start the recursive function.
HRESULT ExploreDevice(IWMDMDevice* pDevice)
{
HRESULT hr = S_OK;
// Get a root enumerator.
CComPtr<IWMDMEnumStorage> pEnumStorage;
hr = pDevice->EnumStorage(&pEnumStorage);
if (SUCCEEDED(hr))
{
RecursiveExploreStorage(pEnumStorage);
}
return hr;
}
// Recursively explore a storage.
void RecursiveExploreStorage(IWMDMEnumStorage* pEnumStorage)
{
HRESULT hr = S_OK;
CComPtr<IWMDMStorage> pStorage;
ULONG numRetrieved = 0;
// Loop through all storages in the current storage.
while((pEnumStorage->Next(1, &pStorage, &numRetrieved) == S_OK) && (numRetrieved == 1))
{
// Get the name of the object.
const UINT MAX_LEN = 255;
WCHAR name[MAX_LEN];
hr = pStorage->GetName((LPWSTR)&name, MAX_LEN);
// TODO: Display the retrieved storage name
// If this is a folder, recurse into it.
if (attributes & WMDM_FILE_ATTR_FOLDER)
{
CComPtr<IWMDMEnumStorage> pEnumSubStorage;
hr = pStorage->EnumStorage(&pEnumSubStorage);
if (SUCCEEDED(hr)
{
RecursiveExploreStorage(pEnumSubStorage);
}
}
pStorage.Release();
} // Get the next storage pointer.
return;
}
Topik terkait
-
Membuat Aplikasi Windows Media Device Manager