Condividi tramite


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
Per un elenco completo dei codici di errore possibili, vedere Codici di errore.

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

Vedi anche

Interfaccia IWMDMDevice2