Compartilhar via


Método IWMDMStorage2::GetStorage (mswmdm.h)

O método GetStorage recupera um armazenamento filho pelo nome diretamente do armazenamento atual sem precisar enumerar todos os filhos.

Sintaxe

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

Parâmetros

[in] pszStorageName

Ponteiro para uma cadeia de caracteres terminada em nulo especificando o nome de armazenamento. Esse é o nome recuperado por IWMDMStorage::GetName.

[out] ppStorage

Ponteiro para o objeto de armazenamento recuperado ou NULL se nenhum armazenamento foi encontrado. O chamador deve liberar essa interface quando terminar com ela.

Retornar valor

O método retorna um HRESULT. Todos os métodos de interface no Windows Media Gerenciador de Dispositivos podem retornar qualquer uma das seguintes classes de códigos de erro:

  • Códigos de erro COM padrão
  • Códigos de erro do Windows convertidos em valores HRESULT
  • Códigos de erro de Gerenciador de Dispositivos do Windows Media
Para obter uma ampla lista de possíveis códigos de erro, consulte Códigos de erro.

Comentários

IWMDMStorage2::GetStorage não dá suporte a caracteres curinga. Não é recursivo; ou seja, ele só encontrará armazenamentos que são filhos imediatos do armazenamento atual. Para encontrar um armazenamento com mais de um nível de profundidade, tente IWMDMDevice3::FindStorage.

Exemplos

A função C++ a seguir pesquisa um armazenamento recursivamente. Ele usa GetStorage para pesquisar os filhos imediatos; se o armazenamento solicitado não for encontrado, ele percorrerá todos os filhos e pesquisará recursivamente as pastas.


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 Valor
Plataforma de Destino Windows
Cabeçalho mswmdm.h
Biblioteca Mssachlp.lib

Confira também

IWMDMStorage2 Interface