Freigeben über


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
Eine ausführliche Liste möglicher Fehlercodes finden Sie unter 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

Weitere Informationen

IWMDMStorage2-Schnittstelle