IKsPin::KsQueryMediums 方法

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 KsQueryMediums 检索引脚支持的介质。

语法

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

参数

ppmi [out]

指向 KSMULTIPLE_ITEM 结构的指针的地址。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,则返回 HRESULT 错误代码。

备注

此方法返回任务分配 KSMULTIPLE_ITEM 结构,后跟零个或多个 REGPINMEDIUM 结构。 KSMULTIPLE_ITEM 结构的 Count 成员指定 REGPINMEDIUM 结构的数量。 每个 REGPINMEDIUM 结构定义引脚支持的介质。

调用方必须使用 CoTaskMemFree 函数释放返回的结构。

必须在 Ksproxy.h 之前包括 Ks.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 类驱动程序筛选器