Метод 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 |