IKsPin::KsQueryMediums 方法
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標頭 |
|
程式庫 |
|
另請參閱