Método IWMDMStorage2::GetStorage (mswmdm.h)
El método GetStorage recupera un almacenamiento secundario por su nombre directamente desde el almacenamiento actual sin tener que enumerar todos los elementos secundarios.
Sintaxis
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parámetros
[in] pszStorageName
Puntero a una cadena terminada en null que especifica el nombre de almacenamiento. Este es el nombre recuperado por IWMDMStorage::GetName.
[out] ppStorage
Puntero al objeto de almacenamiento recuperado o NULL si no se encontró ningún almacenamiento. 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
IWMDMStorage2::GetStorage no admite caracteres comodín. No es recursiva; es decir, solo encontrará almacenamientos que son elementos secundarios inmediatos del almacenamiento actual. Para buscar un almacenamiento más de un nivel de profundidad, pruebe 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 |