Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einige Schnittstellen in Media Foundation müssen durch Aufrufen von IMFGetService::GetService- abgerufen werden, anstatt QueryInterface-aufzurufen. Die GetService--Methode funktioniert wie QueryInterface, jedoch mit den folgenden Unterschieden:
- Zusätzlich zur Schnittstellen-ID wird eine Dienst-ID-GUID verwendet.
- Es kann einen Zeiger auf ein anderes Objekt zurückgeben, das die Schnittstelle implementiert, anstatt einen Zeiger auf das ursprüngliche Objekt zurückzugeben, das abgefragt wird.
Anmerkung
Die IMFGetService--Schnittstelle ähnelt der IServiceProvider- Schnittstelle, die in einigen anderen APIs verwendet wird.
Ein -Dienst- ist eine bestimmte Schnittstelle, die von einer bestimmten Klasse von Objekten über die IMFGetService--Schnittstelle abgerufen wird. Die folgenden Dienste werden definiert.
| Dienstbezeichner | Schnittstelle | Objekte, die diesen Dienst möglicherweise verfügbar machen |
|---|---|---|
| MF_METADATA_PROVIDER_SERVICE | IMFMetadataProvider- | Medienquellen |
| MF_MEDIASOURCE_SERVICE | IMFMediaSource- | Unterstützt in Windows 8.1 und höher. |
| MF_PMP_SERVER_CONTEXT | IMFPMPServer- | Geschützte Medienpfad (PMP)-Mediensitzung. |
| MF_QUALITY_SERVICES | IMFQualityAdvise | Medienquellen. |
| MF_RATE_CONTROL_SERVICE | IMFRateControl- | Medienquellen, Mediensitzung |
| MF_RATE_CONTROL_SERVICE | IMFRateSupport- | Medienquellen, Mediensenken, Mediensitzung |
| MF_REMOTE_PROXY | IMFRemoteProxy- | Proxys für Remoteobjekte. |
| MF_SAMI_SERVICE | IMFSAMIStyle- | Synchronisierte Medienquelle für barrierefreie Medienaustausch (Accessible Media Interchange, SAMI). |
| MF_SOURCE_PRESENTATION_PROVIDER_SERVICE | IMFMediaSourcePresentationProvider | Sequenzerquelle |
| MF_TIMECODE_SERVICE | IMFTimecodeTranslate- | ASF-Medienquelle. |
| MF_TOPONODE_ATTRIBUTE_EDITOR_SERVICE | IMFTopologyNodeAttributeEditor | Mediensitzung |
| MF_WRAPPED_OBJECT | IMFByteStream- | Umschlossene Objekte |
| MF_WRAPPED_BUFFER_SERVICE | Unterstützt in Windows 8.1 und höher. |
|
| MF_WRAPPED_SAMPLE_SERVIC | Unterstützt in Windows 8.1 und höher. |
|
| MF_WORKQUEUE_SERVICES | IMFWorkQueueServices | Mediensitzung |
| MFNET_SAVEJOB_SERVICE | IMFSaveJob- | Bytedatenströme |
| MFNETSOURCE_STATISTICS_SERVICE | IPropertyStore- | Netzwerkquelle. Verwenden Sie diesen Dienst, um Netzwerkstatistiken abzurufen. Siehe MFNETSOURCE_STATISTICS Eigenschaft. |
| MR_AUDIO_POLICY_SERVICE | IMFAudioPolicy- | Audiorenderer |
| MR_BUFFER_SERVICE | IDirect3DSurface9- | DirectX-Oberflächenpuffer |
| MR_CAPTURE_POLICY_VOLUME_SERVICE | IMFSimpleAudioVolume | Audioaufnahmequelle |
| MR_POLICY_VOLUME_SERVICE | IMFSimpleAudioVolume | Audiorenderer |
| MR_STREAM_VOLUME_SERVICE | IMFAudioStreamVolume- | Audiorenderer |
| MR_VIDEO_ACCELERATION_SERVICE | IDirect3DDeviceManager9, IDirectXVideoAccelerationService | Erweiterter Videorenderer (EVR) |
| MR_VIDEO_ACCELERATION_SERVICE | IDirectXVideoMemoryConfiguration | Eingabenadeln im DirectShow EVR-Filter |
| MR_VIDEO_ACCELERATION_SERVICE | IMFVideoSampleAllocator Interface | EVR-Stromsenken. |
| MR_VIDEO_MIXER_SERVICE | Verschiedene Schnittstellen, die vom EVR-Mischer verfügbar gemacht werden. Siehe Verwenden der Videomixer-Steuerelemente. | EVR |
| MR_VIDEO_RENDER_SERVICE | Verschiedene Schnittstellen, die vom EVR-Referenten verfügbar gemacht werden. Siehe Verwenden der Videoanzeigesteuerelemente. | EVR |
| MF_ACOUSTIC_ECHO_CANCELLATION_CONTROL_SERVICE | IAcousticEchoCancellationControl | AEC-Effekte (Acoustic Echo Cancellation). Eingeführt in Windows 11, Version 24H2. |
| MF_AUDIO_EFFECTS_MANAGER_SERVICE | IAudioEffectsManager | Medienquellen. Eingeführt in Windows 11, Version 24H2. |
Sie müssen GetService- verwenden, um die in dieser Tabelle aufgeführten Schnittstellen aus den in dieser Tabelle aufgeführten Objekten abzurufen.
In einigen Fällen wird eine Schnittstelle von einer Objektklasse als Dienst zurückgegeben und durch QueryInterface- von einer anderen Objektklasse zurückgegeben. Die Referenzseiten für jede Schnittstelle geben an, wann GetService- und wann QueryInterface-verwendet werden soll.
Vorsicht
Ein Objekt kann so implementiert werden, dass es eine Dienstschnittstelle über QueryInterface- sowie GetService-zurückgibt. Die Verwendung von QueryInterface jedoch, wenn GetService- erforderlich ist, kann später zu Kompatibilitätsproblemen führen.
Die MFGetService--Funktion ist eine Hilfsfunktion, die ein Objekt für IMFGetService- abfragt und dann die GetService-Methode des Objekts aufruft.
Beispiele
Das folgende Beispiel fragt die Mediensitzung für IMFGetService- ab und ruft die IMFRateControl--Schnittstelle ab.
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);
Das folgende Beispiel entspricht dem vorherigen Beispiel, verwendet jedoch die funktion 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);
Verwandte Themen