Bagikan melalui


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
Untuk daftar ekstensif kemungkinan kode kesalahan, lihat Kode Kesalahan.

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

Lihat juga

Antarmuka IWMDMStorage2