Compartir a través de


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
Para obtener una lista extensa de posibles códigos de error, consulte Códigos de error.

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

Consulte también

Interfaz IWMDMStorage2