Metode IWMDMStorage2::GetStorage (mswmdm.h)
Metode GetStorage mengambil penyimpanan anak berdasarkan nama langsung dari penyimpanan saat ini tanpa harus menghitung semua anak.
Sintaks
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parameter
[in] pszStorageName
Penunjuk ke string yang dihentikan null yang menentukan nama penyimpanan. Ini adalah nama yang diambil oleh IWMDMStorage::GetName.
[out] ppStorage
Penunjuk ke objek penyimpanan yang diambil, atau NULL jika tidak ada penyimpanan yang ditemukan. Pemanggil harus merilis antarmuka ini setelah selesai dengannya.
Nilai kembali
Metode mengembalikan HRESULT. Semua metode antarmuka di Windows Media Device Manager dapat mengembalikan salah satu kelas kode kesalahan berikut:
- Kode kesalahan COM standar
- Kode kesalahan Windows dikonversi ke nilai HRESULT
- Kode galat Pengelola Perangkat Windows Media
Keterangan
IWMDMStorage2::GetStorage tidak mendukung karakter kartubebas. Ini tidak rekursif; artinya, hanya akan menemukan penyimpanan yang merupakan anak-anak langsung dari penyimpanan saat ini. Untuk menemukan penyimpanan lebih dari satu tingkat kedalaman, coba IWMDMDevice3::FindStorage.
Contoh
Fungsi C++ berikut mencari penyimpanan secara rekursif. Ini menggunakan GetStorage untuk mencari anak-anak langsung; jika penyimpanan yang diminta tidak ditemukan, penyimpanan tersebut kemudian mengulangi semua turunan dan mencari folder secara rekursif.
HRESULT myFindStorageRecursively(LPCWSTR storageName, IWMDMStorage* pCurrentStorage, IWMDMStorage** ppFoundStorage)
{
HRESULT hr = S_OK;
// Start with a quick check of all storages inside the storage.
// If we found it, stop now and return.
CComQIPtr<IWMDMStorage2> pStorage2(pCurrentStorage);
hr = pStorage2->GetStorage(storageName, ppFoundStorage);
if (*ppFoundStorage != NULL)
return hr;
//
// Otherwise, enumerate through and dive into all child folders.
//
// First get enumerator.
CComPtr<IWMDMEnumStorage> pEnumStorage;
hr = pCurrentStorage->EnumStorage(&pEnumStorage);
if (hr != S_OK && pEnumStorage != NULL)
return hr;
// Now enumerate all folders until found the right item, or out of folders.
CComPtr<IWMDMStorage> pThisStorage;
DWORD numRetrieved = 0;
DWORD attr = 0;
while(pEnumStorage->Next(1, &pThisStorage, &numRetrieved) == S_OK)
{
pThisStorage->GetAttributes(&attr, NULL);
if (attr & WMDM_FILE_ATTR_FOLDER)
{
hr = myFindStorageRecursively(storageName, pThisStorage, ppFoundStorage);
if (*ppFoundStorage != NULL)
return hr;
}
pThisStorage.Release();
}
return hr;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | mswmdm.h |
Pustaka | Mssachlp.lib |