IPerChannelDbLevel::SetLevelAllChannels-Methode (devicetopology.h)

Die SetLevelAllChannels-Methode legt die Lautstärkepegel aller Kanäle im Audiostream in Dezibel fest.

Syntax

HRESULT SetLevelAllChannels(
  [in] float [] aLevelsDB,
  [in] ULONG    cChannels,
  [in] LPCGUID  pguidEventContext
);

Parameter

[in] aLevelsDB

Zeiger auf ein Array von Volumeebenen. Dieser Parameter verweist auf ein vom Aufrufer zugewiesenes Floatarray , in das die Methode die neuen Volumeebenen in Dezibel für alle Kanäle schreibt. Die -Methode schreibt die Ebene für einen bestimmten Kanal in das Arrayelement, dessen Index mit der Kanalnummer übereinstimmt. Wenn der Audiostream n Kanäle enthält, sind die Kanäle 0 bis n–1 nummeriert. Um die Anzahl der Kanäle im Stream abzurufen, rufen Sie die IPerChannelDbLevel::GetChannelCount-Methode auf.

[in] cChannels

Die Anzahl der Elemente im Array aLevelsDB . Wenn dieser Parameter nicht mit der Anzahl von Kanälen im Audiostream übereinstimmt, schlägt die Methode fehl, ohne das Array aLevelsDB zu ändern.

[in] pguidEventContext

Kontextwert für die IControlChangeNotify::OnNotify-Methode . Dieser Parameter verweist auf eine Ereigniskontext-GUID. Wenn der SetLevelAllChannels-Aufruf den Status des Ebenensteuerelements ändert, erhalten alle Clients, die IControlChangeNotify-Schnittstellen mit diesem Steuerelement registriert haben, Benachrichtigungen. Bei der Implementierung der OnNotify-Methode kann ein Client die Ereigniskontext-GUID überprüfen, um zu ermitteln, ob er oder ein anderer Client die Quelle des Steuerelementänderungsereignisses ist. Wenn der Aufrufer einen NULL-Zeiger für diesen Parameter bereitstellt, empfängt die Benachrichtigungsmethode des Clients einen NULL-Kontextzeiger .

Rückgabewert

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
E_INVALIDARG
Der Parameter cChannels entspricht nicht der Anzahl von Kanälen.
E_POINTER
Zeiger aLevelsDB ist NULL.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Wenn der angegebene Ebenenwert für einen Kanal den Bereich überschreitet, den die IPerChannelDbLevel::GetLevelRange-Methode für diesen Kanal meldet, wird der Wert vom SetLevelAllChannels-Aufruf in den unterstützten Bereich eingeschlossen und erfolgreich abgeschlossen. Ein anschließender Aufruf der IPerChannelDbLevel::GetLevel-Methode ruft den tatsächlichen Wert ab, der für diesen Kanal verwendet wird.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile devicetopology.h

Weitere Informationen

IPerChannelDbLevel-Schnittstelle

IPerChannelDbLevel::GetChannelCount

IPerChannelDbLevel::GetLevel

IPerChannelDbLevel::GetLevelRange