Interfaces de service

Certaines interfaces dans Media Foundation doivent être obtenues en appelant IMFGetService :: GetService au lieu de en appelant QueryInterface. La méthode GetService fonctionne comme QueryInterface, mais avec les différences suivantes :

  • Il prend un GUID d’identificateur de service en plus de l’identificateur d’interface.
  • Elle peut retourner un pointeur vers un autre objet qui implémente l’interface, au lieu de retourner un pointeur vers l’objet d’origine interrogé.

Notes

L’interface IMFGetService est très similaire à l’interface IServiceProvider utilisée dans d’autres API.

Un service est une interface particulière obtenue à partir d’une classe particulière d’objets par le biais de l’interface IMFGetService . Les services suivants sont définis.

Identificateur de service Interface Objets susceptibles d’exposer ce service
_service de fournisseur de métadonnées MF _ _ IMFMetadataProvider Sources multimédias
_service MF MEDIASOURCE _ IMFMediaSource pris en charge dans Windows 8.1 et versions ultérieures.
_contexte du _ serveur _ PMP MF IMFPMPServer Session de média du chemin d’accès au média (PMP) protégé.
_services de qualité MF _ IMFQualityAdvise Sources multimédias.
SERVICE de contrôle de la _ fréquence MF _ _ IMFRateControl Sources multimédias, session multimédia
SERVICE de contrôle de la _ fréquence MF _ _ IMFRateSupport Sources multimédias, récepteurs multimédia, session multimédia
_proxy distant _ MF IMFRemoteProxy Proxies pour les objets distants.
_service sami _ MF IMFSAMIStyle Source de média SAMI (Synchronized Accessible Media Interchange).
_service de _ fournisseur de présentation source _ MF _ IMFMediaSourcePresentationProvider Source de Sequencer
_service de code temporel MF _ IMFTimecodeTranslate Source du média ASF.
SERVICE de l’éditeur d’attributs MF _ TOPONODE _ _ _ IMFTopologyNodeAttributeEditor Session multimédia
_objet encapsulé _ MF IMFByteStream Objets encapsulés
_service de _ mémoire tampon encapsulé MF _ pris en charge dans Windows 8.1 et versions ultérieures.
_exemple de _ _ service MF encapsulé pris en charge dans Windows 8.1 et versions ultérieures.
_services WORKQUEUE _ MF IMFWorkQueueServices Session multimédia
_service MFNET SAVEJOB _ IMFSaveJob Flux d’octets
_service de statistiques MFNETSOURCE _ IPropertyStore Source réseau. Utilisez ce service pour récupérer des statistiques réseau. Consultez la _ propriété MFNETSOURCE Statistics.
_service de _ stratégie _ audio Mr IMFAudioPolicy Convertisseur audio
_service de mémoire tampon Mr _ IDirect3DSurface9 Mémoires tampons de surface DirectX
SERVICE de volume de la _ stratégie de capture RM _ _ _ IMFSimpleAudioVolume Source de capture audio
_service de _ volume de stratégie Mr _ IMFSimpleAudioVolume Convertisseur audio
_service de _ volume de flux Mr _ IMFAudioStreamVolume Convertisseur audio
_ _ service accélérateur vidéo _ Mr IDirect3DDeviceManager9, IDirectXVideoAccelerationService Rendu vidéo amélioré (EVR)
_ _ service accélérateur vidéo _ Mr IDirectXVideoMemoryConfiguration épingles d’entrée sur le filtre EVR DirectShow
_ _ service accélérateur vidéo _ Mr Interface IMFVideoSampleAllocator Récepteurs de flux EVR.
_service de _ mixage _ vidéo Mr Différentes interfaces exposées par le mélangeur EVR. consultez utilisation des contrôles Video Mixer. EVR
_service de _ rendu _ vidéo Mr Différentes interfaces exposées par le présentateur EVR. Consultez utilisation des contrôles d’affichage vidéo. EVR

Vous devez utiliser GetService pour récupérer les interfaces listées dans ce tableau à partir des objets listés dans ce tableau.

Dans certains cas, une interface est retournée en tant que service par une classe d’objets et retournée via QueryInterface par une autre classe d’objets. Les pages de référence pour chaque interface indiquent quand utiliser GetService et quand utiliser QueryInterface.

Attention

Un objet peut être implémenté de manière à retourner une interface de service via QueryInterface et GetService. Toutefois, l’utilisation de QueryInterface quand GetService est requis peut entraîner des problèmes de compatibilité plus tard.

La fonction MFGetService est une fonction d’assistance qui interroge un objet pour IMFGetService , puis appelle la méthode GetService de l’objet.

Exemples

L’exemple suivant interroge la session multimédia pour IMFGetService et obtient l’interface IMFRateControl .

IMFGetService *pGetService = NULL;
IMFRateControl *pRateControl = NULL;
HRESULT hr = S_OK;

hr = pMediaSession->QueryInterface(
    IID_IMFGetService, 
    (void**)&pGetService);

if (SUCCEEDED(hr))
{
    hr = pGetService->GetService(
        MF_RATE_CONTROL_SERVICE, 
        IID_IMFRateControl,
        (void**)&pRateControl);
}
if (SUCCEEDED(hr))
{
    // Use IMFRateControl. (Not shown.)
}

// Clean up.
SAFE_REELEASE(pGetService);
SAFE_RELEASE(pRateControl);

L’exemple suivant est équivalent à l’exemple précédent, mais utilise la fonction MFGetService .

IMFRateControl *pRateControl = NULL;
HRESULT hr = S_OK;

hr = MFGetService(
    pMediaSession, 
    MF_RATE_CONTROL_SERVICE, 
    IID_IMFRateControl, 
    (void**) &pRateCtl 
); 
if (SUCCEEDED(hr))
{
    // Use IMFRateControl. (Not shown.)
}

// Clean up.
SAFE_RELEASE(pRateControl);

Interface IMFGetService

API de plateforme Media Foundation