Méthode IWMDMStorage2 ::GetStorage (mswmdm.h)
La méthode GetStorage récupère un stockage enfant par son nom directement à partir du stockage actuel sans avoir à énumérer tous les enfants.
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 de stockage. Il s’agit du nom récupéré par IWMDMStorage ::GetName.
[out] ppStorage
Pointeur vers l’objet de stockage récupéré ou NULL si aucun stockage n’a été trouvé. L’appelant doit libérer cette interface lorsqu’il l’a terminé.
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 de codes d’erreur suivantes :
- Codes d’erreur COM standard
- Codes d’erreur Windows convertis en valeurs HRESULT
- Codes d’erreur Gestionnaire de périphériques Windows Media
Remarques
IWMDMStorage2 ::GetStorage ne prend pas en charge les caractères génériques. Il n’est pas récursif ; autrement dit, il ne trouve que les stockages qui sont des enfants immédiats du stockage actuel. Pour rechercher un stockage de plusieurs niveaux, essayez 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 dossiers enfants et recherche de manière récursive 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 |