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


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

Метод SetEventHandle задает дескриптор события, который система сигнализирует, когда звуковой буфер готов к обработке клиентом.

Синтаксис

HRESULT SetEventHandle(
  [in] HANDLE eventHandle
);

Параметры

[in] eventHandle

Дескриптор события.

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

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

Код возврата Описание
E_INVALIDARG
Параметр eventHandle имеет значение NULL или недопустимый дескриптор.
AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED
Аудиопоток не инициализирован для буферизации на основе событий.
AUDCLNT_E_NOT_INITIALIZED
Аудиопоток не инициализирован.
AUDCLNT_E_DEVICE_INVALIDATED
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования.
AUDCLNT_E_SERVICE_NOT_RUNNING
Аудиослужба Windows не запущена.

Комментарии

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

Во время инициализации потока клиент может включить буферизацию на основе событий. Для этого клиент вызывает метод IAudioClient::Initialize с AUDCLNT_STREAMFLAGS_EVENTCALLBACK флагом. После включения управляемой событиями буферизации и перед вызовом метода IAudioClient::Start для запуска потока клиент должен вызвать SetEventHandle , чтобы зарегистрировать дескриптор событий, который система будет сигнализировать каждый раз, когда буфер будет готов к обработке клиентом.

Дескриптор события должен находиться в состоянии без знака в момент, когда клиент вызывает метод Start .

Если клиент включил буферизацию потока на основе событий, но клиент вызывает метод Start для этого потока без предварительного вызова SetEventHandle, вызов Start завершится ошибкой и возвращает код ошибки.

Если клиент не включает буферизацию потока на основе событий, но пытается задать дескриптор события для потока путем вызова SetEventHandle, вызов завершится ошибкой и возвратом кода ошибки.

Пример кода, который вызывает метод SetEventHandle , см. в разделе Потоки в монопольном режиме.

Требования

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

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

Интерфейс IAudioClient

IAudioClient::Initialize

IAudioClient::Start