IWMDMStorage4::GetReferences 메서드(mswmdm.h)
GetReferences 메서드는 이 스토리지가 가리키는 IWMDMStorage 개체에 대한 포인터 배열을 검색합니다. 추상 앨범 또는 재생 목록은 일반적으로 MTP 디바이스에서 참조 컬렉션으로 저장됩니다.
구문
HRESULT GetReferences(
[out] DWORD *pdwRefs,
[out] IWMDMStorage ***pppIWMDMStorage
);
매개 변수
[out] pdwRefs
pppIWMDMStorage에서 검색한 값 수에 대한 포인터입니다. 개체에 참조가 없으면 0이 반환되고 함수는 S_OK 반환합니다.
[out] pppIWMDMStorage
스토리지의 참조를 나타내는 IWMDMStorage 인터페이스 포인터의 배열에 대한 포인터에 대한 포인터입니다. 예를 들어 이러한 참조는 재생 목록 또는 앨범의 항목을 나타낼 수 있습니다. 검색된 배열은 개체 자체에 표시되는 순서와 같습니다. 이 배열의 메모리는 Windows Media 장치 관리자 할당됩니다. 호출하는 애플리케이션이 이 배열에 대한 액세스를 완료하면 먼저 모든 인터페이스 포인터에서 Release 를 호출한 다음 CoTaskMemFree를 사용하여 배열 메모리를 해제해야 합니다.
반환 값
이 메서드는 HRESULT를 반환합니다. Windows Media 장치 관리자 모든 인터페이스 메서드는 다음 오류 코드 클래스를 반환할 수 있습니다.
- 표준 COM 오류 코드
- HRESULT 값으로 변환된 Windows 오류 코드
- Windows Media 장치 관리자 오류 코드
설명
Windows Media 장치 관리자 스토리지에서 참조를 추가하고 제거하는 작업을 기본 서비스 공급자에게 위임합니다. 참조가 있는 개체는 추상 재생 목록 또는 앨범과 같은 추상 개체를 참조합니다. 폴더는 참조가 있는 것으로 간주되지 않습니다.
이 메서드에는 두 가지 유형의 비동기 삭제가 발생할 수 있으며 오류가 발생할 수 있습니다. 애플리케이션이 스토리지를 검색한 후 스토리지에 대한 참조 가 삭제되고 애플리케이션이 참조를 사용하려고 하면 메서드 호출은 WMDM_E_INTERFACEDEAD 반환합니다. 참조가 참조하는 파일이 삭제된 경우 S_FALSE 반환됩니다.
예제
다음 C++ 코드는 스토리지(pStorage)의 참조를 쿼리합니다.
// Get references.
CComQIPtr<IWMDMStorage4> pStorage4(pStorage);
if (pStorage4 != NULL)
{
WCHAR name[100];
DWORD numRefs = 0;
IWMDMStorage** parrReferences;
hr = pStorage4->GetReferences(&numRefs, &parrReferences);
for(int i = 0; i < numRefs; i++)
{
ZeroMemory(name, sizeof(name));
hr = parrReferences[i]->GetName(name, (sizeof(name) / sizeof(WCHAR)) - 1);
if (hr == S_OK)
// TODO: Display the name.
parrReferences[i]->Release();
}
// Free the memory.
if (parrReferences != NULL)
CoTaskMemFree(parrReferences);
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | mswmdm.h |
라이브러리 | Mssachlp.lib |