Share via


IAudioClient3::InitializeSharedAudioStream-Methode (audioclient.h)

Initialisiert einen freigegebenen Stream mit der angegebenen Periodizität.

Syntax

HRESULT InitializeSharedAudioStream(
  [in]           DWORD              StreamFlags,
  [in]           UINT32             PeriodInFrames,
  [in]           const WAVEFORMATEX *pFormat,
  [in, optional] LPCGUID            AudioSessionGuid
);

Parameter

[in] StreamFlags

Art: DWORD

Flags, um die Erstellung des Datenstroms zu steuern. Der Client sollte diesen Parameter auf 0 oder auf den bitweisen OR einer oder mehrerer der unterstützten AUDCLNT_STREAMFLAGS_XXX Konstanten oder AUDCLNT_SESSIONFLAGS_XXX Konstanten festlegen. Die unterstützten AUDCLNT_STREAMFLAGS_XXX Konstanten für diesen Parameter bei Verwendung dieser Methode sind:

  • AUDCLNT_STREAMFLAGS_EVENTCALLBACK

[in] PeriodInFrames

Typ: UINT32

Vom Client angeforderte Periodizität. Dieser Wert muss ein integrales Vielfaches des Werts sein, der im pFundamentalPeriodInFrames-Parameter für IAudioClient3::GetSharedModeEnginePeriod zurückgegeben wird. PeriodInFrames müssen auch größer oder gleich dem in pMinPeriodInFrames zurückgegebenen Wert und kleiner oder gleich dem in pMaxPeriodInFrames zurückgegebenen Wert sein.

[in] pFormat

Typ: const WAVEFORMATEX*

Zeiger auf einen Formatdeskriptor. Dieser Parameter muss auf einen gültigen Formatdeskriptor vom Typ WAVEFORMATEX oder WAVEFORMATEXTENSIBLE verweisen. Weitere Informationen finden Sie im Abschnitt Hinweise für IAudioClient::Initialize.

[in, optional] AudioSessionGuid

Typ: LPCGUID

Zeiger auf eine Sitzungs-GUID. Dieser Parameter verweist auf einen GUID-Wert, der die Audiositzung identifiziert, zu der der Stream gehört. Wenn die GUID eine Sitzung identifiziert, die zuvor geöffnet wurde, fügt die -Methode den Stream zu dieser Sitzung hinzu. Wenn die GUID keine vorhandene Sitzung identifiziert, öffnet die -Methode eine neue Sitzung und fügt der Sitzung den Stream hinzu. Der Stream bleibt während seiner Lebensdauer Mitglied derselben Sitzung. Das Festlegen dieses Parameters auf NULL entspricht dem Übergeben eines Zeigers auf einen GUID_NULL Wert.

Rückgabewert

Typ: HRESULT

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

Rückgabecode Beschreibung
AUDCLNT_E_ALREADY_INITIALIZED
Das IAudioClient-Objekt ist bereits initialisiert.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
Das AUDCLNT_STREAMFLAGS_LOOPBACK-Flag ist festgelegt, aber das Endpunktgerät ist ein Erfassungsgerät, kein Renderinggerät.
AUDCLNT_E_CPUUSAGE_EXCEEDED
Gibt an, dass die Dauer des Prozessdurchlaufs die maximale CPU-Auslastung überschritten hat. Die Audio-Engine verfolgt die CPU-Auslastung, indem die Dauer des Prozessdurchlaufs die maximale CPU-Auslastung überschreitet. Die maximale CPU-Auslastung wird als Prozentsatz der Periodizität der Engine berechnet. Der Prozentsatzwert ist der CPU-Drosselungswert des Systems (im Bereich von 10 % und 90 %). Wenn dieser Wert nicht gefunden wird, wird der Standardwert von 40 % verwendet, um die maximale CPU-Auslastung zu berechnen.
AUDCLNT_E_DEVICE_INVALIDATED
Das Audioendpunktgerät wurde getrennt, oder die Audiohardware oder die zugehörigen Hardwareressourcen wurden neu konfiguriert, deaktiviert, entfernt oder anderweitig für die Verwendung nicht verfügbar gemacht.
AUDCLNT_E_DEVICE_IN_USE
Das Endpunktgerät wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus verwendet, oder das Gerät wird im freigegebenen Modus verwendet, und der Aufrufer wurde aufgefordert, das Gerät im exklusiven Modus zu verwenden.
AUDCLNT_E_ENGINE_FORMAT_LOCKED
Der angegebene Client AUDCLNT_STREAMOPTIONS_MATCH_FORMAT beim Aufrufen von IAudioClient2::SetClientProperties, aber das Format der Audio-Engine wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option "Übereinstimmungsformat" anzugeben, und dann das aktuelle Format der Audio-Engine verwenden.
AUDCLNT_E_ENGINE_PERIODICITY_LOCKED
Der angegebene Client AUDCLNT_STREAMOPTIONS_MATCH_FORMAT beim Aufrufen von IAudioClient2::SetClientProperties, aber die Periodizität der Audio-Engine wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option "Übereinstimmungsformat" anzugeben, und dann die aktuelle Periodizität der Audio-Engine verwenden.
AUDCLNT_E_ENDPOINT_CREATE_FAILED
Fehler beim Erstellen des Audioendpunkts für das Render- oder Aufnahmegerät. Dies kann auftreten, wenn das Audioendpunktgerät nicht angeschlossen wurde oder die Audiohardware oder die zugehörigen Hardwareressourcen neu konfiguriert, deaktiviert, entfernt oder anderweitig für die Verwendung nicht verfügbar gemacht wurden.
AUDCLNT_E_INVALID_DEVICE_PERIOD
Gibt an, dass der angeforderte Gerätezeitraum, der mit den PeriodInFrames angegeben wird, kein integrales Vielfaches der grundlegenden Periodizität der Audio-Engine ist, kürzer als der Mindestzeitraum des Moduls ist oder länger als der maximale Zeitraum des Moduls ist. Rufen Sie die unterstützten Periodizitätswerte der Engine ab, indem Sie IAudioClient3::GetSharedModeEnginePeriod aufrufen.
AUDCLNT_E_UNSUPPORTED_FORMAT
Das Audiomodul (freigegebener Modus) oder das Audioendpunktgerät (exklusiver Modus) unterstützt das angegebene Format nicht.
AUDCLNT_E_SERVICE_NOT_RUNNING
Der Windows-Audiodienst wird nicht ausgeführt.
E_POINTER
Der Parameter pFormat ist NULL.
E_INVALIDARG
Parameter pFormat verweist auf eine ungültige Formatbeschreibung. oder das AUDCLNT_STREAMFLAGS_LOOPBACK-Flag festgelegt ist, aber ShareMode ist nicht gleich AUDCLNT_SHAREMODE_SHARED; oder das AUDCLNT_STREAMFLAGS_CROSSPROCESS-Flag festgelegt ist, aber ShareMode entspricht AUDCLNT_SHAREMODE_EXCLUSIVE.

Ein vorheriger Aufruf von SetClientProperties wurde mit einer ungültigen Kategorie für Audio-/Renderdatenströme durchgeführt.

E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Im Gegensatz zu IAudioClient::Initialize können Sie mit dieser Methode keine Puffergröße angeben. Die Puffergröße wird basierend auf der mit dem Parameter PeriodInFrames angeforderten Periodizität berechnet. Es liegt in der Verantwortung der Client-App sicherzustellen, dass Audiobeispiele rechtzeitig in den Puffer und aus dem Puffer übertragen werden.

Audioclients sollten auf zulässige Werte für den Parameter PeriodInFrames überprüfen, indem sie IAudioClient3::GetSharedModeEnginePeriod aufrufen. Der Wert von PeriodInFrames muss ein integrales Vielfaches des werts sein, der im pFundamentalPeriodInFrames-Parameter zurückgegeben wird. PeriodInFrames müssen auch größer oder gleich dem in pMinPeriodInFrames zurückgegebenen Wert und kleiner oder gleich dem Wert von pMaxPeriodInFrames sein.

Für ein 44100-kHz-Format gibt GetSharedModeEnginePeriod beispielsweise Folgendes zurück:

  • pDefaultPeriodInFrames = 448 Frames (ca. 10,16 Millisekunden)

  • pFundamentalPeriodInFrames = 4 Frames (ca. 0,09 Millisekunden)

  • pMinPeriodInFrames = 48 Frames (ca. 1,09 Millisekunden)

  • pMaxPeriodInFrames = 448 Frames (identisch mit der Standardeinstellung)

Zulässige Werte für den Parameter PeriodInFrames für InitializeSharedAudioStream wären 48 und 448. Sie würden auch Dinge wie 96 und 128 umfassen.

Sie enthalten NICHT 4 (was kleiner als der zulässige Mindestwert ist) oder 98 (was kein Vielfaches des Fundamentalwerts ist) oder 1000 (was größer als der maximal zulässige Wert ist).

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile audioclient.h

Weitere Informationen

IAudioClient

IAudioClient2

IAudioClient3