Freigeben über


IAudioClient::GetService-Methode (audioclient.h)

Die GetService-Methode greift auf zusätzliche Dienste aus dem Audioclientobjekt zu.

Syntax

HRESULT GetService(
  [in]  REFIID riid,
  [out] void   **ppv
);

Die Parameter

[in] riid

Die Schnittstellen-ID für den angeforderten Dienst. Der Client sollte diesen Parameter auf einen der folgenden REFIID-Werte festlegen:

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Weitere Informationen finden Sie in den Hinweisen.

[out] ppv

Zeiger auf eine Zeigervariable, in die die Methode die Adresse einer Instanz der angeforderten Schnittstelle schreibt. Über diese Methode erhält der Aufrufer einen gezählten Verweis auf die Schnittstelle. Der Aufrufer ist dafür verantwortlich, die Schnittstelle freizugeben, wenn sie nicht mehr benötigt wird, indem die Release-Methode der Schnittstelle aufgerufen wird. Wenn der GetService-Aufruf fehlschlägt, ist *ppvNULL.

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn ein Fehler auftritt, enthalten mögliche Rückgabecodes, sind jedoch nicht beschränkt auf die in der folgenden Tabelle gezeigten Werte.

Rückgabecode Description
E_POINTER
Der Parameter ppv ist NULL.
E_NOINTERFACE
Die angeforderte Schnittstelle ist nicht verfügbar.
AUDCLNT_E_NOT_INITIALIZED
Der Audiodatenstrom wurde nicht initialisiert.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
Der Aufrufer hat versucht, auf eine IAudioCaptureClient-Schnittstelle auf einem Renderingendpunkt oder eine IAudioRenderClient-Schnittstelle auf einem Aufnahmeendpunkt zuzugreifen.
AUDCLNT_E_DEVICE_INVALIDATED
Das Audioendpunktgerät wurde nicht angeschlossen, oder die Audiohardware oder die zugehörigen Hardwareressourcen wurden neu konfiguriert, deaktiviert, entfernt oder anderweitig nicht zur Verwendung verfügbar gemacht.
AUDCLNT_E_RESOURCES_INVALIDATED
Die Ressourcen des Datenstroms wurden ungültig. Dieser Fehler kann aus den folgenden Gründen ausgelöst werden:
– Der Datenstrom wird angehalten.
– Ein exklusiver oder Offload-Datenstrom wird getrennt.
– Eine verpackte Anwendung mit einem exklusiven Modus oder Offload-Stream wird stillgeschützt.
- Ein "geschützter Ausgabedatenstrom" wird geschlossen.
AUDCLNT_E_SERVICE_NOT_RUNNING
Der Windows-Audiodienst wird nicht ausgeführt.

Bemerkungen

Für diese Methode ist eine vorherige Initialisierung der IAudioClient-Schnittstelle erforderlich. Alle Aufrufe dieser Methode schlagen mit dem Fehler AUDCLNT_E_NOT_INITIALIZED fehl, bis der Client den Audiodatenstrom initialisiert, indem die IAudioClient::Initialize-Methode erfolgreich aufgerufen wird.

Die GetService-Methode unterstützt die folgenden Dienstschnittstellen:

In Windows 7 wurde ein neuer Dienstbezeichner IID_IMFTrustedOutput hinzugefügt, der die Verwendung von OTA-Objekten (Output Trust Authority) erleichtert. Diese Objekte können innerhalb oder außerhalb des geschützten Medienpfads (PMP) von Media Foundation ausgeführt und Inhalte außerhalb der Media Foundation-Pipeline gesendet werden. Wenn sich der Aufrufer außerhalb von PMP befindet, funktioniert die OTA möglicherweise nicht im PMP, und die Schutzeinstellungen sind weniger robust. OTAs müssen die IMFTrustedOutput-Schnittstelle implementieren. Durch übergeben IID_IMFTrustedOutput in GetService kann eine Anwendung einen Zeiger auf die IMFTrustedOutput-Schnittstelle des Objekts abrufen. Weitere Informationen zu geschützten Objekten und IMFTrustedOutput finden Sie unter "Geschützter Medienpfad" in der Media Foundation SDK-Dokumentation.

Informationen zur Verwendung vertrauenswürdiger Audiotreiber in OTAs finden Sie unter Protected User Mode Audio (PUMA).For information about using trusted audio drivers in OTAs, see Protected User Mode Audio (PUMA)

Beachten Sie, dass das Aktivieren von IMFTrustedOutput über diesen Mechanismus unabhängig davon funktioniert, ob der Aufrufer in PMP ausgeführt wird. Wenn der Aufrufer jedoch nicht in einem geschützten Prozess ausgeführt wird (d. h. der Aufrufer befindet sich nicht im PMP von Media Foundation), funktioniert das Audio-OTA möglicherweise nicht im PMP, und die Schutzeinstellungen sind weniger robust.

Um die Schnittstellen-ID für eine Dienstschnittstelle abzurufen, verwenden Sie den __uuidof-Operator . Beispielsweise wird die Schnittstellen-ID von IAudioCaptureClient wie folgt definiert:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Informationen zum __uuidof-Operator finden Sie in der Windows SDK-Dokumentation.

Um das IAudioClient-Objekt freizugeben und alle zugehörigen Ressourcen freizugeben, muss der Client alle Verweise auf alle Dienstobjekte freigeben, die durch Aufrufen von GetService erstellt wurden, zusätzlich zum Aufrufen von Release auf der IAudioClient-Schnittstelle selbst. Der Client muss einen Dienst aus demselben Thread freigeben, der das IAudioClient-Objekt freigibt.

Die Schnittstellen "IAudioSessionControl", "IAudioStreamVolume", "IChannelAudioVolume" und "ISimpleAudioVolume " steuern und überwachen Aspekte von Audiositzungen und Datenströmen im freigegebenen Modus. Diese Schnittstellen funktionieren nicht mit Exklusivmodusstreams.

Codebeispiele, die die GetService-Methode aufrufen, finden Sie in den folgenden Themen:

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [Desktop-Apps | UWP-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Fenster
Header audioclient.h

Siehe auch

IAudioCaptureClient-Schnittstelle

IAudioClient-Schnittstelle

IAudioClient::Initialize

IAudioClock-Schnittstelle

IAudioRenderClient-Schnittstelle

IAudioSessionControl-Schnittstelle

IAudioStreamVolume-Schnittstelle

IChannelAudioVolume-Schnittstelle

ISimpleAudioVolume-Schnittstelle