IWMDMStorage2::GetStorage メソッド (mswmdm.h)

GetStorage メソッドは、すべての子を列挙することなく、現在のストレージから名前で子ストレージを直接取得します。

構文

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

パラメーター

[in] pszStorageName

ストレージ名を指定する null で終わる文字列へのポインター。 これは、 IWMDMStorage::GetName によって取得される名前です。

[out] ppStorage

取得したストレージ オブジェクトへのポインター。ストレージが見つからなかった場合は NULL 。 呼び出し元は、このインターフェイスが完了したら、このインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。 Windows Media デバイス マネージャーのすべてのインターフェイス メソッドは、次のいずれかのエラー コード クラスを返すことができます。

  • 標準 COM エラー コード
  • HRESULT 値に変換された Windows エラー コード
  • Windows Media デバイス マネージャーエラー コード
考えられるエラー コードの詳細な一覧については、「 エラー コード」を参照してください。

注釈

IWMDMStorage2::GetStorage ではワイルドカード文字はサポートされていません。 再帰型ではありません。つまり、現在のストレージの直下の子であるストレージのみが検索されます。 複数のレベルの深いストレージを見つけるには、 IWMDMDevice3::FindStorage を試してください。

次の C++ 関数は、ストレージを再帰的に検索します。 GetStorage を使用して、直接の子を検索します。要求されたストレージが見つからない場合は、すべての子をループ処理し、フォルダーを再帰的に検索します。


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

要件

要件
対象プラットフォーム Windows
ヘッダー mswmdm.h
Library Mssachlp.lib

こちらもご覧ください

IWMDMStorage2 インターフェイス