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


Метод IKsPin::KsQueryMediums

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Метод KsQueryMediums извлекает среды, поддерживаемые закреплением.

Синтаксис

HRESULT KsQueryMediums(
  [out] KSMULTIPLE_ITEM **ppmi
);

Параметры

ppmi [out]

Адрес указателя на структуру KSMULTIPLE_ITEM .

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возвращается код ошибки HRESULT .

Комментарии

Этот метод возвращает структуру, выделенную задачей KSMULTIPLE_ITEM , за которой следует ноль или более структур REGPINMEDIUM . Элемент Count структуры KSMULTIPLE_ITEM указывает количество структур REGPINMEDIUM . Каждая структура REGPINMEDIUM определяет среду, поддерживаемую закреплением.

Вызывающий объект должен освободить возвращаемые структуры с помощью функции CoTaskMemFree .

Необходимо включить Ks.h перед Ksproxy.h.

Примеры

Следующая вспомогательная функция пытается сопоставить закрепление с заданной средой.

HRESULT FindMatchingMedium(
    IPin *pPin, 
    REGPINMEDIUM *pMedium, 
    bool *pfMatch)
{
    IKsPin* pKsPin = NULL;
    KSMULTIPLE_ITEM *pmi;

    *pfMatch = false;
    HRESULT hr = pPin->QueryInterface(IID_IKsPin, (void **)&pKsPin);
    if (FAILED(hr)) 
        return hr;  // Pin does not support IKsPin.

    hr = pKsPin->KsQueryMediums(&pmi);
    pKsPin->Release();
    if (FAILED(hr))
        return hr;  // Pin does not support mediums.

    if (pmi->Count) 
    {
        // Use pointer arithmetic to reference the first medium structure.
        REGPINMEDIUM *pTemp = (REGPINMEDIUM*)(pmi + 1);
        for (ULONG i = 0; i < pmi->Count; i++, pTemp++) 
        {
            if (pMedium->clsMedium == pTemp->clsMedium) 
            {
                *pfMatch = true;
                break;
            }
        }
    }        
    CoTaskMemFree(pmi);
    return S_OK;
}

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Ksproxy.h
Библиотека
Strmiids.lib

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

Коды ошибок и успешного выполнения

Интерфейс IKsPin

Фильтры драйверов классов WDM