Bagikan melalui


Metode IKsPin::KsQueryMediums

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Metode ini KsQueryMediums mengambil media yang didukung oleh pin.

Sintaks

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

Parameter

ppmi [out]

Alamat pointer ke struktur KSMULTIPLE_ITEM .

Mengembalikan nilai

Jika metode berhasil, metode akan mengembalikan S_OK. Jika gagal, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Metode ini mengembalikan struktur KSMULTIPLE_ITEM yang dialokasikan tugas, yang diikuti oleh nol atau lebih struktur REGPINMEDIUM . Anggota Count dari struktur KSMULTIPLE_ITEM menentukan jumlah struktur REGPINMEDIUM . Setiap struktur REGPINMEDIUM mendefinisikan media yang didukung oleh pin.

Pemanggil harus membebaskan struktur yang dikembalikan, menggunakan fungsi CoTaskMemFree .

Anda harus menyertakan Ks.h sebelum Ksproxy.h.

Contoh

Fungsi pembantu berikut mencoba mencocokkan pin dengan media tertentu.

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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung
Windows 2000 Server [hanya aplikasi desktop]
Header
Ksproxy.h
Pustaka
Strmiids.lib

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IKsPin

Filter Driver Kelas WDM