Compartir a través de


Método IKsPin::KsQueryMediums

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El KsQueryMediums método recupera los medios admitidos por un pin.

Sintaxis

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

Parámetros

ppmi [out]

Dirección de un puntero a una estructura de KSMULTIPLE_ITEM .

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, devuelve un código de error HRESULT .

Observaciones

Este método devuelve una estructura de KSMULTIPLE_ITEM asignada por tareas, seguida de cero o más estructuras REGPINMEDIUM . El miembro Count de la estructura KSMULTIPLE_ITEM especifica el número de estructuras REGPINMEDIUM . Cada estructura REGPINMEDIUM define un medio admitido por la patilla.

El autor de la llamada debe liberar las estructuras devueltas mediante la función CoTaskMemFree .

Debe incluir Ks.h antes de Ksproxy.h.

Ejemplos

La siguiente función auxiliar intenta hacer coincidir una patilla con un medio 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 Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Ksproxy.h
Biblioteca
Strmiids.lib

Consulte también

Códigos de error y éxito

IKsPin (interfaz)

Filtros de controlador de clase WDM