Поделиться через


Метод IAudioClient::GetService (audioclient.h)

Метод GetService обращается к дополнительным службам из объекта аудиоконферентного клиента.

Синтаксис

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

Параметры

[in] riid

Идентификатор интерфейса для запрошенной службы. Клиент должен задать этому параметру одно из следующих значений REFIID:

IID_IAudioCaptureClient

IID_IAudioClientDuckingControl

IID_IAudioClock

IID_IAudioRenderClient

IID_IAudioSessionControl

IID_IAudioStreamVolume

IID_IChannelAudioVolume

IID_IMFTrustedOutput

IID_ISimpleAudioVolume

Дополнительные сведения см. в подразделе "Примечания".

[out] ppv

Указатель на переменную указателя, в которую метод записывает адрес экземпляра запрошенного интерфейса. С помощью этого метода вызывающий объект получает подсчитываемую ссылку на интерфейс. Вызывающий объект отвечает за освобождение интерфейса, когда он больше не нужен, путем вызова метода Release интерфейса. Если вызов GetService завершается сбоем, *ppv имеет значение NULL.

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.

Код возврата Описание
E_POINTER
Параметр ppv имеет значение NULL.
E_NOINTERFACE
Запрошенный интерфейс недоступен.
AUDCLNT_E_NOT_INITIALIZED
Аудиопоток не инициализирован.
AUDCLNT_E_WRONG_ENDPOINT_TYPE
Вызывающий объект пытался получить доступ к интерфейсу IAudioCaptureClient в конечной точке отрисовки или интерфейсу IAudioRenderClient в конечной точке захвата.
AUDCLNT_E_DEVICE_INVALIDATED
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования.
AUDCLNT_E_SERVICE_NOT_RUNNING
Аудиослужба Windows не запущена.

Комментарии

Этот метод требует предварительной инициализации интерфейса IAudioClient . Все вызовы этого метода завершаются ошибкой AUDCLNT_E_NOT_INITIALIZED до тех пор, пока клиент не инициализирует аудиопоток, вызвав метод IAudioClient::Initialize .

Метод GetService поддерживает следующие интерфейсы служб:

В Windows 7 добавлен новый идентификатор службы , IID_IMFTrustedOutput, который упрощает использование объектов центра доверия вывода (OTA). Эти объекты могут работать внутри или вне защищенного пути мультимедиа (PMP) Media Foundation и отправлять содержимое за пределы конвейера Media Foundation. Если вызывающий объект находится за пределами PMP, OTA может не работать в PMP, а параметры защиты менее надежны. OTA должны реализовывать интерфейс IMFTrustedOutput . Передав IID_IMFTrustedOutput в GetService, приложение может получить указатель на интерфейс IMFTrustedOutput объекта. Дополнительные сведения о защищенных объектах и IMFTrustedOutput см. в разделе Защищенный путь к мультимедиа в документации по пакету SDK Media Foundation.

Сведения об использовании доверенных аудиодрайверов в OTA см. в статье Защищенный звук в пользовательском режиме (PUMA).

Обратите внимание, что активация IMFTrustedOutput с помощью этого механизма работает независимо от того, работает ли вызывающий объект в PMP. Однако если вызывающий объект не выполняется в защищенном процессе (то есть вызывающий объект не находится в пределах PMP Media Foundation), звуковая OTA может не работать в PMP, а параметры защиты менее надежны.

Чтобы получить идентификатор интерфейса службы, используйте оператор __uuidof . Например, идентификатор интерфейса IAudioCaptureClient определяется следующим образом:


const IID IID_IAudioCaptureClient  __uuidof(IAudioCaptureClient)

Сведения об операторе __uuidof см. в документации по Windows SDK.

Чтобы освободить объект IAudioClient и все связанные с ним ресурсы, клиент должен освободить все ссылки на все объекты службы, созданные путем вызова GetService, а также вызвать Release в интерфейсе IAudioClient . Клиент должен освободить службу из того же потока, который освобождает объект IAudioClient .

Интерфейсы IAudioSessionControl, IAudioStreamVolume, IChannelAudioVolume и ISimpleAudioVolume контролируют и отслеживают аспекты аудиосеансов и потоков в общем режиме. Эти интерфейсы не работают с потоками в монопольном режиме.

Примеры кода, вызывающие метод GetService , см. в следующих разделах:

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header audioclient.h

См. также раздел

Интерфейс IAudioCaptureClient

Интерфейс IAudioClient

IAudioClient::Initialize

Интерфейс IAudioClock

Интерфейс IAudioRenderClient

Интерфейс IAudioSessionControl

Интерфейс IAudioStreamVolume

Интерфейс IChannelAudioVolume

Интерфейс ISimpleAudioVolume