Compartilhar via


Método IKsPin::KsQueryMediums

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O KsQueryMediums método recupera os meios com suporte por um pin.

Sintaxe

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

Parâmetros

ppmi [out]

Endereço de um ponteiro para uma estrutura KSMULTIPLE_ITEM .

Retornar valor

Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro HRESULT .

Comentários

Esse método retorna uma estrutura de KSMULTIPLE_ITEM alocada por tarefa, que é seguida por zero ou mais estruturas REGPINMEDIUM . O membro Count da estrutura KSMULTIPLE_ITEM especifica o número de estruturas REGPINMEDIUM . Cada estrutura REGPINMEDIUM define um meio com suporte pelo pino.

O chamador deve liberar as estruturas retornadas usando a função CoTaskMemFree .

Você deve incluir Ks.h antes de Ksproxy.h.

Exemplos

A função auxiliar a seguir tenta corresponder um pino a um meio especificado.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Ksproxy.h
Biblioteca
Strmiids.lib

Confira também

Códigos de erro e êxito

IKsPin Interface

Filtros de driver de classe WDM