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.
Initialisiert einen freigegebenen Datenstrom mit der angegebenen Periodizität.
Syntax
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Die Parameter
[in] StreamFlags
Typ: DWORD-
Flags zum Steuern der Erstellung des Datenstroms. 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 Parameter "pFundamentalPeriodInFrames " an "IAudioClient3::GetSharedModeEnginePeriod" zurückgegeben wird. PeriodInFrames müssen auch größer oder gleich dem wert sein, der in pMinPeriodInFrames zurückgegeben wird, und kleiner oder gleich dem wert, der in pMaxPeriodInFrames zurückgegeben wird.
[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 Datenstrom gehört. Wenn die GUID eine zuvor geöffnete Sitzung identifiziert, fügt die Methode den Datenstrom zu dieser Sitzung hinzu. Wenn die GUID keine vorhandene Sitzung identifiziert, öffnet die Methode eine neue Sitzung und fügt den Datenstrom dieser Sitzung hinzu. Der Datenstrom bleibt ein Mitglied derselben Sitzung für seine Lebensdauer. Das Festlegen dieses Parameters auf NULL entspricht dem Übergeben eines Zeigers an einen GUID_NULL Wert.
Rückgabewert
Typ: HRESULT-
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 |
|---|---|
|
Das IAudioClient-Objekt wird bereits initialisiert. |
|
Das AUDCLNT_STREAMFLAGS_LOOPBACK Flag ist festgelegt, das Endpunktgerät ist jedoch ein Aufnahmegerät, kein Renderinggerät. |
|
Gibt an, dass die Prozessdurchlaufdauer die maximale CPU-Auslastung überschritten hat. Das Audiomodul verfolgt die CPU-Auslastung, indem die Dauer des Prozessdurchlaufs die maximale CPU-Auslastung überschreitet. Die maximale CPU-Auslastung wird als Prozentsatz der Periodizität des Moduls berechnet. Der Prozentwert ist der CPU-Drosselungswert des Systems (innerhalb des Bereichs von 10% und 90%). Wenn dieser Wert nicht gefunden wird, wird der Standardwert von 40% verwendet, um die maximale CPU-Auslastung zu berechnen. |
|
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. |
|
Das Endpunktgerät wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus verwendet, oder das Gerät wird im gemeinsam genutzten Modus verwendet, und der Anrufer wird aufgefordert, das Gerät im exklusiven Modus zu verwenden. |
|
Der Client hat beim Aufrufen von IAudioClient2::SetClientProperties AUDCLNT_STREAMOPTIONS_MATCH_FORMAT angegeben, aber das Format des Audiomoduls wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option für das Übereinstimmungsformat anzugeben und dann das aktuelle Format des Audiomoduls zu verwenden. |
|
Der Client hat AUDCLNT_STREAMOPTIONS_MATCH_FORMAT beim Aufrufen von IAudioClient2::SetClientProperties angegeben, aber die Periodizität des Audiomoduls wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option für das Übereinstimmungsformat anzugeben und dann die aktuelle Periodizität des Audiomoduls zu verwenden. |
|
Die Methode konnte den Audioendpunkt für das Render- oder Aufnahmegerät nicht erstellen. Dies kann auftreten, wenn das Audioendpunktgerät nicht angeschlossen wurde oder die Audiohardware oder die zugehörigen Hardwareressourcen neu konfiguriert, deaktiviert, entfernt oder anderweitig nicht zur Verwendung zur Verfügung gestellt wurden. |
|
Gibt an, dass der angeforderte Gerätezeitraum, der mit "PeriodInFrames " angegeben ist, kein integrales Vielfaches der grundlegenden Periodizität des Audiomoduls ist, kürzer als der Mindestzeitraum des Moduls oder länger als die maximale Periode des Moduls ist. Rufen Sie die unterstützten Periodizitätswerte des Moduls ab, indem Sie IAudioClient3::GetSharedModeEnginePeriod aufrufen. |
|
Das Audiomodul (gemeinsam genutzter Modus) oder das Audioendpunktgerät (exklusiver Modus) unterstützt das angegebene Format nicht. |
|
Der Windows-Audiodienst wird nicht ausgeführt. |
|
Parameter pFormat ist NULL. |
|
Parameter pFormat verweist auf eine ungültige Formatbeschreibung; oder das AUDCLNT_STREAMFLAGS_LOOPBACK Flag festgelegt ist, shareMode ist jedoch nicht gleich AUDCLNT_SHAREMODE_SHARED; oder das AUDCLNT_STREAMFLAGS_CROSSPROCESS Flag festgelegt ist, aber ShareMode ist gleich AUDCLNT_SHAREMODE_EXCLUSIVE.
Ein vorheriger Aufruf von SetClientProperties wurde mit einer ungültigen Kategorie für Audio-/Renderdatenströme durchgeführt. |
|
Nicht genügend Arbeitsspeicher. |
|
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. |
Bemerkungen
Im Gegensatz zu IAudioClient::Initialize lässt diese Methode nicht zu, dass Sie eine Puffergröße angeben. Die Puffergröße wird basierend auf der mit dem Parameter PeriodInFrames angeforderten Regelmäßigkeit berechnet. Es liegt in der Verantwortung der Client-App, sicherzustellen, dass Audiobeispiele zeitnah in und aus dem Puffer übertragen werden.
Audioclients sollten auf zulässige Werte für den Parameter PeriodInFrames überprüfen, indem IAudioClient3::GetSharedModeEnginePeriod aufgerufen wird. Der Wert von PeriodInFrames muss ein integrales Vielfaches des im Parameter "pFundamentalPeriodInFrames " zurückgegebenen Werts sein. PeriodInFrames müssen auch größer oder gleich dem wert sein, der in pMinPeriodInFrames zurückgegeben wird, und kleiner oder gleich dem Wert von pMaxPeriodInFrames.
For example, for a 44100 kHz format, GetSharedModeEnginePeriod might return:
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ürden 48 und 448 enthalten. Sie würden auch Dinge wie 96 und 128 enthalten.
Sie enthalten NICHT 4 (kleiner als der zulässige Mindestwert) oder 98 (was kein Vielfaches des Fundamentalwerts ist) oder 1000 (die größer als der maximal zulässige Wert ist).
Anforderungen
| Anforderung | Wert |
|---|---|
| Mindestens unterstützter Client | Windows 10 [nur Desktop-Apps] |
| Mindestanforderungen für unterstützte Server | Windows Server 2016 [nur Desktop-Apps] |
| Zielplattform | Fenster |
| Header | audioclient.h |