다음을 통해 공유


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
라이브러리 Mssachlp.lib

추가 정보

IWMDMDevice2 인터페이스