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