IKsPin::KsQueryMediums 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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 [仅限桌面应用] |
标头 |
|
库 |
|
另请参阅