IWMDMStorage4::GetReferences 方法 (mswmdm.h)
GetReferences 方法检索指向此存储所指向的 IWMDMStorage 对象的指针数组。 抽象专辑或播放列表通常存储为 MTP 设备上的引用集合。
语法
HRESULT GetReferences(
[out] DWORD *pdwRefs,
[out] IWMDMStorage ***pppIWMDMStorage
);
参数
[out] pdwRefs
指向 pppIWMDMStorage 检索到的值计数的指针。 如果 对象没有引用,则返回零,函数将返回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 |
Library | Mssachlp.lib |