Méthode IKsPin::KsQueryMediums

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La KsQueryMediums méthode récupère les supports pris en charge par une broche.

Syntaxe

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

Paramètres

ppmi [out]

Adresse d’un pointeur vers une structure KSMULTIPLE_ITEM .

Valeur renvoyée

Si la méthode réussit, retourne S_OK. En cas d’échec, elle retourne un code d’erreur HRESULT .

Notes

Cette méthode retourne une structure KSMULTIPLE_ITEM allouée à une tâche, qui est suivie de zéro ou plusieurs structures REGPINMEDIUM . Le membre Count de la structure KSMULTIPLE_ITEM spécifie le nombre de structures REGPINMEDIUM . Chaque structure REGPINMEDIUM définit un support pris en charge par la broche.

L’appelant doit libérer les structures retournées à l’aide de la fonction CoTaskMemFree .

Vous devez inclure Ks.h avant Ksproxy.h.

Exemples

La fonction d’assistance suivante tente de faire correspondre une épingle à un support spécifié.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Ksproxy.h
Bibliothèque
Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IKsPin, interface

Filtres de pilote de classe WDM