Metodo IWMDMDevice2::GetStorage (mswmdm.h)
Il metodo GetStorage cerca negli elementi figlio immediati dell'archiviazione radice una risorsa di archiviazione con il nome specificato.
Sintassi
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parametri
[in] pszStorageName
Puntatore a una stringa con terminazione Null che specifica il nome della risorsa di archiviazione da trovare. Questo parametro non supporta caratteri jolly.
[out] ppStorage
Puntatore all'interfaccia IWMDMStorage della risorsa di archiviazione specificata dal parametro pszStorageName . Il chiamante deve rilasciare questa interfaccia al termine dell'operazione.
Valore restituito
Il metodo restituisce un valore HRESULT. Tutti i metodi di interfaccia in Windows Media Gestione dispositivi possono restituire una delle classi di codici di errore seguenti:
- Codici di errore COM standard
- Codici di errore di Windows convertiti in valori HRESULT
- Codici di errore di Windows Media Gestione dispositivi
Commenti
Questa funzione non è ricorsiva; cerca solo gli elementi figlio immediati dell'archiviazione radice del dispositivo. Per una versione di ricerca ricorsiva di questa funzione, usare IWMDMDevice3::FindStorage.
Esempio
La funzione C++ seguente cerca un archivio in modo ricorsivo. Usa GetStorage per cercare gli elementi figlio immediati; se la risorsa di archiviazione richiesta non viene trovata, esegue un ciclo in tutte le cartelle figlio e cerca in modo ricorsivo le cartelle.
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;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | mswmdm.h |
Libreria | Mssachlp.lib |