共用方式為


IKsPin::KsQueryMediums 方法

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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 [僅限傳統型應用程式]
標頭
Ksproxy.h
程式庫
Strmiids.lib

另請參閱

錯誤和成功碼

IKsPin 介面

WDM 類別驅動程式篩選器