Partager via


Méthode IWMDMDevice2 ::GetStorage (mswmdm.h)

La méthode GetStorage recherche dans les enfants immédiats du stockage racine un stockage portant le nom donné.

Syntaxe

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

Paramètres

[in] pszStorageName

Pointeur vers une chaîne terminée par null spécifiant le nom du stockage à rechercher. Ce paramètre ne prend pas en charge les caractères génériques.

[out] ppStorage

Pointeur vers l’interface IWMDMStorage du stockage spécifié par le paramètre pszStorageName . L’appelant doit libérer cette interface lorsqu’elle est terminée.

Valeur retournée

Cette méthode retourne un code HRESULT. Toutes les méthodes d’interface dans Windows Media Gestionnaire de périphériques peuvent retourner l’une des classes suivantes de codes d’erreur :

  • Codes d’erreur COM standard
  • Codes d’erreur Windows convertis en valeurs HRESULT
  • Codes d’erreur Gestionnaire de périphériques Windows Media
Pour obtenir une liste complète des codes d’erreur possibles, consultez Codes d’erreur.

Remarques

Cette fonction n’est pas récursive ; il recherche uniquement les enfants immédiats du stockage racine de l’appareil. Pour une version de recherche récursive de cette fonction, utilisez IWMDMDevice3 ::FindStorage.

Exemples

La fonction C++ suivante recherche un stockage de manière récursive. Il utilise GetStorage pour rechercher les enfants immédiats ; si le stockage demandé est introuvable, il effectue ensuite une boucle dans tous les enfants et effectue une recherche récursive dans les dossiers.


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

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête mswmdm.h
Bibliothèque Mssachlp.lib

Voir aussi

IWMDMDevice2, interface