Поделиться через


Метод IWMDMDevice2::GetStorage (mswmdm.h)

Метод GetStorage выполняет поиск хранилища с заданным именем в непосредственных дочерних элементах корневого хранилища.

Синтаксис

HRESULT GetStorage(
  [in]  LPCWSTR      pszStorageName,
  [out] IWMDMStorage **ppStorage
);

Параметры

[in] pszStorageName

Указатель на строку, завершающуюся значением NULL, указывающую имя искать хранилище. Этот параметр не поддерживает подстановочные знаки.

[out] ppStorage

Указатель на интерфейс IWMDMStorage хранилища, указанного параметром pszStorageName . По завершении работы вызывающий объект должен освободить этот интерфейс.

Возвращаемое значение

Метод возвращает HRESULT. Все методы интерфейса в Windows Media диспетчер устройств могут возвращать любой из следующих классов кодов ошибок:

  • Стандартные коды ошибок COM
  • Коды ошибок Windows, преобразованные в значения HRESULT
  • Коды ошибок диспетчер устройств Windows Media
Подробный список возможных кодов ошибок см. в разделе Коды ошибок.

Комментарии

Эта функция не является рекурсивной; он выполняет поиск только непосредственных дочерних элементов корневого хранилища устройства. Для рекурсивного поиска версии этой функции используйте IWMDMDevice3::FindStorage.

Примеры

Следующая функция C++ выполняет рекурсивный поиск хранилища. Он использует GetStorage для поиска непосредственных дочерних элементов; Если запрошенное хранилище не найдено, оно перебирает все дочерние элементы и выполняет рекурсивный поиск в папках.


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;
}

Требования

Требование Значение
Целевая платформа Windows
Header mswmdm.h
Библиотека Mssachlp.lib

См. также раздел

Интерфейс IWMDMDevice2