IWMDMStorage2::GetStorage-Methode (mswmdm.h)
Die GetStorage-Methode ruft einen untergeordneten Speicher nach Namen direkt aus dem aktuellen Speicher ab, ohne alle untergeordneten Elemente auflisten zu müssen.
Syntax
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
Parameter
[in] pszStorageName
Zeiger auf eine null-beendete Zeichenfolge, die den Speichernamen angibt. Dies ist der Von IWMDMStorage::GetName abgerufene Name.
[out] ppStorage
Zeiger auf das abgerufene Speicherobjekt oder NULL , wenn kein Speicher gefunden wurde. Der Aufrufer muss diese Schnittstelle freigeben, wenn er damit fertig ist.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:
- Com-Standardfehlercodes
- In HRESULT-Werte konvertierte Windows-Fehlercodes
- Windows Media Geräte-Manager Fehlercodes
Hinweise
IWMDMStorage2::GetStorage unterstützt keine Wildcardzeichen. Es ist nicht rekursiv; Das heißt, es werden nur Speicher gefunden, die unmittelbar untergeordnete Elemente des aktuellen Speichers sind. Um einen Speicher mit mehr als einer Ebene zu finden, probieren Sie IWMDMDevice3::FindStorage aus.
Beispiele
Die folgende C++-Funktion sucht rekursiv nach einem Speicher. Es verwendet GetStorage , um die unmittelbaren untergeordneten Elemente zu durchsuchen. wenn der angeforderte Speicher nicht gefunden wird, durchläuft er alle untergeordneten Elemente und durchsucht ordner rekursiv.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | mswmdm.h |
Bibliothek | Mssachlp.lib |