Método IWMDMDevice2::GetStorage (mswmdm.h)
El método GetStorage busca en los elementos secundarios inmediatos del almacenamiento raíz un almacenamiento con el nombre especificado.
Sintaxis
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parámetros
[in] pszStorageName
Puntero a una cadena terminada en NULL que especifica el nombre del almacenamiento que se va a buscar. Este parámetro no admite caracteres comodín.
[out] ppStorage
Puntero a la interfaz IWMDMStorage del almacenamiento especificado por el parámetro pszStorageName . El autor de la llamada debe liberar esta interfaz cuando haya terminado con ella.
Valor devuelto
El método devuelve un valor HRESULT. Todos los métodos de interfaz de Windows Media Administrador de dispositivos pueden devolver cualquiera de las siguientes clases de códigos de error:
- Códigos de error COM estándar
- Códigos de error de Windows convertidos en valores HRESULT
- Códigos de error de windows Media Administrador de dispositivos
Comentarios
Esta función no es recursiva; solo busca en los elementos secundarios inmediatos del almacenamiento raíz del dispositivo. Para obtener una versión de búsqueda recursiva de esta función, use IWMDMDevice3::FindStorage.
Ejemplos
La siguiente función de C++ busca un almacenamiento de forma recursiva. Usa GetStorage para buscar en los elementos secundarios inmediatos; Si no se encuentra el almacenamiento solicitado, recorre en bucle todas las carpetas secundarias y busca de forma recursiva.
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;
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | mswmdm.h |
Library | Mssachlp.lib |