IWMDMDevice2::GetStorage メソッド (mswmdm.h)
GetStorage メソッドは、ルート ストレージの直接の子を検索して、指定された名前のストレージを検索します。
構文
HRESULT GetStorage(
[in] LPCWSTR pszStorageName,
[out] IWMDMStorage **ppStorage
);
パラメーター
[in] pszStorageName
検索するストレージの名前を指定する null で終わる文字列へのポインター。 このパラメーターはワイルドカード文字をサポートしていません。
[out] ppStorage
pszStorageName パラメーターで指定されたストレージの IWMDMStorage インターフェイスへのポインター。 呼び出し元は、このインターフェイスが完了したら、このインターフェイスを解放する必要があります。
戻り値
このメソッドは HRESULT を返します。 Windows Media デバイス マネージャーのすべてのインターフェイス メソッドは、次のいずれかのエラー コード クラスを返すことができます。
- 標準 COM エラー コード
- HRESULT 値に変換された Windows エラー コード
- Windows Media デバイス マネージャーエラー コード
注釈
この関数は再帰的ではありません。デバイス ルート ストレージの直接の子のみが検索されます。 この関数の再帰的な検索バージョンの場合は、 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 |