Aracılığıyla paylaş


Hizmet Arabirimleri

Media Foundation'daki bazı arabirimler, QueryInterfaceçağrılması yerine IMFGetService::GetService çağrılarak alınmalıdır. GetService yöntemi QueryInterface gibi çalışır, ancak aşağıdaki farklarla birlikte:

  • Arabirim tanımlayıcısına ek olarak bir hizmet tanımlayıcıSı GUID alır.
  • Sorgulanan özgün nesneye işaretçi döndürmek yerine arabirimini uygulayan başka bir nesneye işaretçi döndürebilir.

Not

IMFGetService arabirimi, diğer bazı API'lerde kullanılan IServiceProvider arabirimine çok benzer.

 

hizmet, IMFGetService arabirimi aracılığıyla belirli bir nesne sınıfından alınan belirli bir arabirimdir. Aşağıdaki hizmetler tanımlanır.

Hizmet tanımlayıcısı Arayüz Bu hizmeti kullanıma sunan nesneler
MF_METADATA_PROVIDER_SERVICE IMFMetadataProvider Medya kaynakları
MF_MEDIASOURCE_SERVICE IMFMediaSource Windows 8.1 ve sonraki sürümlerde desteklenir.
MF_PMP_SERVER_CONTEXT IMFPMPServer Korumalı medya yolu (PMP) Medya Oturumu.
MF_QUALITY_SERVICES IMFQualityAdvise Medya kaynakları.
MF_RATE_CONTROL_SERVICE IMFRateControl Medya kaynakları, Medya Oturumu
MF_RATE_CONTROL_SERVICE IMFRateSupport Medya kaynakları, medya havuzları, Medya Oturumu
MF_REMOTE_PROXY IMFRemoteProxy Uzak nesneler için proxy'ler.
MF_SAMI_SERVICE IMFSAMIStyle Eşitlenmiş Erişilebilir Medya Değişimi (SAMI) medya kaynağı.
MF_SOURCE_PRESENTATION_PROVIDER_SERVICE IMFMediaSourcePresentationProvider Sıralayıcı kaynağı
MF_TIMECODE_SERVICE IMFTimecodeTranslate ASF medya kaynağı.
MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE IMFTopologyNodeAttributeEditor Medya oturumu
MF_WRAPPED_OBJECT IMFByteStream Sarmalanan nesneler
MF_WRAPPED_BUFFER_SERVICE Windows 8.1 ve sonraki sürümlerde desteklenir.
MF_WRAPPED_SAMPLE_SERVIC Windows 8.1 ve sonraki sürümlerde desteklenir.
MF_WORKQUEUE_SERVICES IMFWorkQueueServices Medya oturumu
MFNET_SAVEJOB_SERVICE IMFSaveJob Bayt akışları
MFNETSOURCE_STATISTICS_SERVICE IPropertyStore Ağ kaynağı. Ağ istatistiklerini almak için bu hizmeti kullanın. Bkz. MFNETSOURCE_STATISTICS Özelliği.
MR_AUDIO_POLICY_SERVICE IMFAudioPolicy Ses işleyici
MR_BUFFER_SERVICE IDirect3DSurface9 DirectX yüzey arabellekleri
MR_CAPTURE_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Ses yakalama kaynağı
MR_POLICY_VOLUME_SERVICE IMFSimpleAudioVolume Ses işleyici
MR_STREAM_VOLUME_SERVICE IMFAudioStreamVolume Ses işleyici
MR_VIDEO_ACCELERATION_SERVICE IDirect3DDeviceManager9, IDirectXVideoAccelerationService Gelişmiş video işleyici (EVR)
MR_VIDEO_ACCELERATION_SERVICE IDirectXVideoMemoryConfiguration DirectShow EVR filtresinde giriş pinleri
MR_VIDEO_ACCELERATION_SERVICE IMFVideoSampleAllocator Arabirimi EVR akış havuzları.
MR_VIDEO_MIXER_SERVICE EVR karıştırıcısı tarafından kullanıma sunulan çeşitli arabirimler. Bkz. Video Mixer Denetimlerini Kullanma. EVR
MR_VIDEO_RENDER_SERVICE EVR sunucusu tarafından kullanıma sunulan çeşitli arabirimler. bkz. Video Görüntüleme Denetimlerini Kullanma. EVR
MF_ACOUSTIC_ECHO_CANCELLATION_CONTROL_SERVICE IAcousticEchoCancellationControl Akustik Yankı İptali (AEC) efektleri. Windows 11, sürüm 24H2'de kullanıma sunulmuştur.
MF_AUDIO_EFFECTS_MANAGER_SERVICE IAudioEffectsManager Medya kaynakları. Windows 11, sürüm 24H2'de kullanıma sunulmuştur.

 

Bu tabloda listelenen arabirimleri bu tabloda listelenen nesnelerden almak için GetService kullanmanız gerekir.

Bazı durumlarda, bir arabirim bir nesne sınıfı tarafından hizmet olarak döndürülür ve başka bir nesne sınıfı tarafından QueryInterface aracılığıyla döndürülür. Her arabirimin başvuru sayfaları, GetService ne zaman kullanılacağını ve queryinterface ne zaman kullanılacağını belirtir.

Dikkat

Bir nesne, QueryInterface ve GetServicearacılığıyla hizmet arabirimi döndürecek şekilde uygulanabilir. Ancak, GetService gerektiğinde QueryInterface kullanılması daha sonra uyumluluk sorunlarına yol açabilir.

 

MFGetService işlevi, IMFGetService için bir nesneyi sorgulayan ve sonra nesnenin GetService yöntemini çağıran bir yardımcı işlevdir.

Örnekler

Aşağıdaki örnek, IMFGetService için Medya Oturumu'nu sorgular ve IMFRateControl arabirimini alır.

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

Aşağıdaki örnek önceki örne eşdeğerdir ancak MFGetService işlevini kullanır.

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

IMFGetService Arabirimi

Media Foundation Platform API'leri