Metodo IWMDMStorage2::GetStorage (mswmdm.h)
Il metodo GetStorage recupera una risorsa di archiviazione figlio in base al nome direttamente dalla risorsa di archiviazione corrente senza dover enumerare tutti gli elementi figlio.
Sintassi
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parametri
[in] pszStorageName
Puntatore a una stringa con terminazione Null che specifica il nome di archiviazione. Si tratta del nome recuperato da IWMDMStorage::GetName.
[out] ppStorage
Puntatore all'oggetto di archiviazione recuperato o NULL se non è stata trovata alcuna risorsa di archiviazione. 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
IWMDMStorage2::GetStorage non supporta caratteri jolly. Non è ricorsivo; ovvero troverà solo archivi figlio immediati dell'archiviazione corrente. Per trovare una risorsa di archiviazione più approfondita di un livello, provare 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 |