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
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 |