Freigeben über


IWMDMDevice2::GetStorage-Methode (mswmdm.h)

Die GetStorage-Methode durchsucht die unmittelbar untergeordneten Elemente des Stammspeichers nach einem Speicher mit dem angegebenen Namen.

Syntax

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

Parameter

[in] pszStorageName

Zeiger auf eine NULL-beendete Zeichenfolge, die den Namen des zu suchenden Speichers angibt. Dieser Parameter unterstützt keine Wildcardzeichen.

[out] ppStorage

Zeiger auf die IWMDMStorage-Schnittstelle des durch den pszStorageName-Parameter angegebenen Speichers. 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

Diese Funktion ist nicht rekursiv. Es durchsucht nur die unmittelbar untergeordneten Elemente des Gerätestammspeichers. Verwenden Sie für eine rekursive Suchversion dieser Funktion IWMDMDevice3::FindStorage.

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

IWMDMDevice2-Schnittstelle