Метод 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
- Коды ошибок Windows, преобразованные в значения HRESULT
- Коды ошибок диспетчер устройств 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 |
Header | mswmdm.h |
Библиотека | Mssachlp.lib |