Поделиться через


Метод 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

См. также раздел

Создание списка воспроизведения на устройстве

Интерфейс IWMDMStorage4

IWMDMStorage4::SetReferences