Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка класса IOAudioControl

Опции
Развертывание Target:

На этой странице
Язык:

IOAudioControl

Представляет любой управляемый атрибут IOAudioDevice.

Экземпляр IOAudioControl может принадлежать одному IOAudioPort. Кроме того, это может связанный с IOAudioEngine как управление по умолчанию для того IOAudioEngine.

Когда его значение изменяется, это отправляет уведомление CoreAudio.framework (HAL). Это также звонит к ValueChangeHandler.

Основной класс IOAudioControl содержит тип, значение и идентификатор канала, представляющий канал (ы) который акты о контроле на. Это может также содержать читаемый формат для имени канала, а также управления ID, который может использоваться для идентификации уникальных средств управления. Дополнительно это может содержать подтип и использование. Каждый тип имеет свой собственный набор возможных подтипов. Там в настоящее время четыре различных типа управления определяли: kIOAudioControlTypeLevel, kIOAudioControlTypeToggle, kIOAudioControlTypeSelector. Каждый представлен подклассом IOAudioControl: IOAudioLevelControl, IOAudioToggleControl, IOAudioSelectorControl. Регулятор уровня определяет диапазон позволенных значений и имеет определенный подтип kIOAudioLevelControlSubTypeVolume, используемого для определения регулятора громкости. Управление переключателем допускает булево значение и имеет определенный подтип kIOAudioToggleControlSubTypeMute для бесшумной регулировки. Селекторное управление имеет список позволенных выборов со значением и описанием для каждого позволенного выбора и имеет следующие подтипы: kIOAudioSelectorControlSubTypeOutput для выходного селектора и kIOAudioSelectorControlSubTypeInput для входного селектора. См. документацию подкласса для большего количества полного описания каждого

Существуют перечисления для значений идентификатора канала по умолчанию и имен общего канала в IOAudioTypes.h. Значения идентификатора канала снабжаются префиксом 'kIOAudioControlChannelID', и имена общего канала снабжаются префиксом 'kIOAudioControlChannelName'. Все атрибуты IOAudioControl сохранены в реестре. Ключ, используемый для каждого атрибута, определяется в IOAudioTypes.h с определить соответствием следующего образца: 'kIOAudioControl <название атрибута> Ключ'. Например: kIOAudioControlChannelIDKey.

В дополнение к существующим определенным типам управления драйверы могут определить свое собственное также для других целей.

Изменения в значении IOAudioControl, сделанном CoreAudio.framework, сделаны через IORegistry. Когда CoreAudio.framework инициирует изменение значения, управление получает setProperties () сообщение. setProperties () реализация ищет свойство 'IOAudioControlValue' и если настоящее, setValue вызовов () на водительском IOWorkLoop с новым значением. setValue () функция сначала проверяет, чтобы видеть, отличается ли новое значение. Если так, это вызывает performValueChange () для вызова через к драйверу для внесения изменения в аппаратных средствах. Если тот вызов успешно выполняется, значение изменяется, и новое значение установлено в реестре. Дополнительно уведомления отправляются всем клиентам, зарегистрировавшимся для них.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.1 и позже.
  • Обращенный IOWorkLoop для добавления нового IOAudioControlUserClient.

    Объявление

    C++

    virtual IOReturn addUserClient( IOAudioControlUserClient *newUserClient);

    Параметры

    newUserClient

    IOAudioControlUserClientto быть добавленным.

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

    Возвраты kIOReturnSuccess на успехе.

    Обсуждение

    Нет никакой потребности вызвать это непосредственно. Это вызывает на workLoop newUserClient () через addUserClientAction ().

  • Действие IOCommandGate, вызывающее addUserClient () при содержании IOCommandGate.

    Объявление

    C++

    static IOReturn addUserClientAction( OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4);

    Параметры

    owner

    Владелец IOCommandGate (IOAudioControl в этом случае).

    arg1

    IOAudioControlUserClient, который будет добавлен.

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

    Возвращает результат addUserClient () - kIOReturnSuccess на успехе.

    Обсуждение

    Это необходимо, чтобы позволить addUserClient () быть вызванным на IOWorkLoop.

  • Вызванный автоматически IOAudioControlUserClient, когда пользовательский клиент закрывает его соединение с управлением.

    Объявление

    C++

    virtual void clientClosed( IOAudioControlUserClient *client);

    Параметры

    client

    Разъединившийся пользовательский объект клиента.

  • Создает новый экземпляр IOAudioControlUserClient.

    Объявление

    C++

    virtual IOReturn createUserClient( task_ttask, void *securityID, UInt32type, IOAudioControlUserClient **newUserClient);

    Параметры

    task

    Задача, запрашивающая новый пользовательский клиент.

    securityID

    Дополнительная парамать безопасности передала в клиентом - проигнорированный.

    type

    Дополнительный пользовательский клиентский тип передал в клиентом.

    newUserClient

    IOAudioControlUserClient * должен быть сохранен в этом параметрическом усилителе на успешном завершении.

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

    Возвраты kIOReturnSuccess на успехе.

    Обсуждение

    Эта функция вызвана newUserClient () для создания нового экземпляра IOAudioControlUserClient. Эта функция может быть переопределена подклассами, которые должны добавить функциональность к IOAudioControlUserClient. В этом случае они должны разделить IOAudioControlUserClient на подклассы и возвратить новый, инициализированный экземпляр того подкласса. Производный класс, требующий переопределения createUserClient, должен переопределить версию с параметром свойств для целей Intel, и без параметра свойств для целей PPC. #if __ i386 __ директива может использоваться для выбора между этими двумя способами поведения.

  • Создает новый экземпляр IOAudioControlUserClient.

    Объявление

    C++

    virtual IOReturn createUserClient( task_ttask, void *securityID, UInt32type, IOAudioControlUserClient **newUserClient, OSDictionary *properties);

    Параметры

    task

    Задача, запрашивающая новый пользовательский клиент.

    securityID

    Дополнительная парамать безопасности передала в клиентом - проигнорированный.

    type

    Дополнительный пользовательский клиентский тип передал в клиентом.

    newUserClient

    IOAudioControlUserClient * должен быть сохранен в этом параметрическом усилителе на успешном завершении.

    properties

    Словарь дополнительных свойств для соединения.

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

    Возвраты kIOReturnSuccess на успехе.

    Обсуждение

    Эта функция вызвана newUserClient () для создания нового экземпляра IOAudioControlUserClient. Эта функция может быть переопределена подклассами, которые должны добавить функциональность к IOAudioControlUserClient. В этом случае они должны разделить IOAudioControlUserClient на подклассы и возвратить новый, инициализированный экземпляр того подкласса. Производный класс, требующий переопределения createUserClient, должен переопределить версию с параметром свойств для целей Intel, и без параметра свойств для целей PPC. #if __ i386 __ директива может использоваться для выбора между этими двумя способами поведения.

  • Объявление

    C++

    static IOReturn detachUserClientsAction( OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4);

  • Вынуждает управление быть спугнутым к аппаратным средствам.

    Объявление

    C++

    virtual IOReturn flushValue();

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

    Возвращает результат performValueChange () - kIOReturnSuccess на успехе.

    Обсуждение

    Это вызовы функции performValueChange () непосредственно с текущей стоимостью IOAudioControl.

  • Освобождает все ресурсы, выделенные IOAudioControl.

    Объявление

    C++

    virtual void free();

    Обсуждение

    Не вызывайте это непосредственно. Когда refcount экземпляра переходит в 0, это вызывает автоматически система. Постепенно уменьшать refcount, разъединение вызова () на объекте.

  • Возвращает идентификатор канала для управления.

    Объявление

    C++

    virtual UInt32 getChannelID();

  • Возвращает IOCommandGate для этого IOAudioControl.

    Объявление

    C++

    virtual IOCommandGate *getCommandGate();

  • Возвращает управление ID для управления.

    Объявление

    C++

    virtual UInt32 getControlID();

  • Возвращает true после того, как запускаются (), был вызван.

    Объявление

    C++

    virtual bool getIsStarted();

    Обсуждение

    Используемый IOAudioPort и IOAudioEngine, чтобы решить, должно ли быть запущено управление.

  • Возвращает текущую стоимость управления.

    Объявление

    C++

    virtual OSObject *getValue();

  • Возвращает IOWorkLoop для целого драйвера аудио.

    Объявление

    C++

    virtual IOWorkLoop *getWorkLoop();

  • Обновляет значение для этого управления и отсылает измененное уведомление значения.

    Объявление

    C++

    virtual IOReturn hardwareValueChanged( OSObject *newValue);

    Параметры

    newValue

    Новое значение для этого управления.

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

    Возвраты kIOReturnSuccess, если успешно обновляется значение.

    Обсуждение

    Это разработано, чтобы быть вызванным драйвером, когда он обнаруживает, что значение аппаратных средств изменилось без вмешательства драйвера (например, когда внешнее событие вызывает изменение). Различие между hardwareValueChanged () и setValue () - то, что hardwareValueChanged () не вызывает performValueChange (), который передает сообщение обратно драйверу, чтобы заставить его изменять аппаратные средства с новым значением. Эта функция должна быть вызвана на IOWorkLoop.

  • Инициализирует недавно выделенный IOAudioControl с данными атрибутами.

    Объявление

    C++

    virtual bool init( UInt32 type, OSObject *initialValue, UInt32 channelID, const char *channelName = 0, UInt32 cntrlID = 0, UInt32 subType = 0, UInt32 usage = 0, OSDictionary *properties = 0);

    Параметры

    type

    Тип управления. Общие, известные типы определяются в IOAudioTypes.h. Они в настоящее время состоят из kIOAudioControlTypeLevel, kIOAudioControlTypeToggle, kIOAudioControlTypeSelector.

    channelID

    ID канала (ов), что акты о контроле на. Общий IDs расположен в IOAudioTypes.h.

    channelName

    Дополнительное имя для канала. Общие названия расположены в IOAudioDefines.h. Любое имя, не определенное в IOAudioDefines.h, должно быть локализовано, чтобы быть должным образом выведенным на экран на нескольких языках.

    cntrlID

    Дополнительный ID для управления, которое может использоваться для однозначного определения средств управления

    subType

    Дополнительный подтип, определенный для данного типа

    usage

    Дополнительное значение, указывающее, как будет использоваться управление. В настоящее время определяемые использования являются kIOAudioControlUsageInput, kIOAudioControlUsageOutput и kIOAudioControlUsagePassThru. Когда управление установлено как управление по умолчанию на IOAudioEngine, это значение используется.

    properties

    Стандартный список свойств передал init () функцию любого нового IOService. Этот словарь сохранен в ключе реестра для этого экземпляра.

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

    Возвращает true на успехе.

  • Создает новый пользовательский объект клиента для этого экземпляра IOAudioControl.

    Объявление

    C++

    virtual IOReturn newUserClient( task_t task, void *securityID, UInt32 type, IOUserClient **handler);

    Параметры

    task

    Задача, запрашивающая новый пользовательский клиент.

    securityID

    Дополнительная парамать безопасности передала в клиентом - проигнорированный.

    type

    Дополнительный пользовательский клиентский тип передал в клиентом - 0 для пользовательского клиентского типа по умолчанию.

    handler

    Новый IOUserClient * должен быть сохранен в этом параметрическом усилителе на успешном завершении.

    properties

    Словарь дополнительных свойств для соединения.

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

    Возвраты kIOReturnSuccess на успехе. Май также заканчивается kIOReturnError или kIOReturnNoMemory.

    Обсуждение

    Когда пользовательский процесс открывает соединение с этим IOAudioControl, это вызывает автоматически Набор I/O. Когда пользовательский процесс должен зарегистрироваться для уведомлений изменения значения, это обычно делается. Эта реализация выделяет новый объект IOAudioControlUserClient. Нет никакой потребности вызвать это непосредственно. Производный класс, требующий переопределения newUserClient, должен переопределить версию с параметром свойств для целей Intel, и без параметра свойств для целей PPC. #if __ i386 __ директива может использоваться для выбора между этими двумя способами поведения.

  • Вызванный setValue () для совершения вызова к valueChangeHandler для обновления аппаратных средств.

    Объявление

    C++

    virtual IOReturn performValueChange( OSObject *newValue);

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

    Возвращает результат вызова обработчика (или kIOReturnError на ошибке).

  • Обращенный IOWorkLoop для удаления IOAudioControlUserClient.

    Объявление

    C++

    virtual IOReturn removeUserClient( IOAudioControlUserClient *userClient);

    Параметры

    userClient

    IOAudioControlUserClient, который будет удален.

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

    Возвраты kIOReturnSuccess на успехе.

    Обсуждение

    Это вызывает на IOWorkLoop clientClosed () через removeUserClientAction (), когда уходит пользовательский клиент. Это нельзя вызвать непосредственно.

  • Действие IOCommandGate, вызывающее removeUserClient () при содержании IOCommandGate.

    Объявление

    C++

    static IOReturn removeUserClientAction( OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4);

    Параметры

    owner

    Владелец IOCommandGate (IOAudioControl в этом случае).

    arg1

    IOAudioControlUserClient, который будет удален.

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

    Возвращает результат removeUserClient () - kIOReturnSuccess на успехе.

    Обсуждение

    Это необходимо, чтобы позволить removeUserClient () быть вызванным на IOWorkLoop.

  • Вызванный, когда значение изменилось для управления.

    Объявление

    C++

    virtual void sendValueChangeNotification();

    Обсуждение

    Эта функция отсылает уведомление изменения значения пользовательским клиентам.

  • Зашедший init время для установки идентификатора канала для этого IOAudioControl.

    Объявление

    C++

    virtual void setChannelID( UInt32 newChannelID);

  • Зашедший init время для установки названия канала для этого IOAudioControl.

    Объявление

    C++

    virtual void setChannelName( const char *channelName);

  • Устанавливает управляемый для этого управления.

    Объявление

    C++

    virtual void setControlID( UInt32cntrlID);

    Параметры

    cntrlID

    Управление ID для управления.

    Обсуждение

    ID управления является дополнительным атрибутом, который может использоваться для отслеживания IOAudioControls. Типичное использование для IOAudioDevice для присвоения уникального, которым управляют каждому управлению, которое это создает, и затем сделайте оператор переключения на ID управления, когда это получает audioControlValueChanged () уведомление. Когда объект создают и не должны вызывать снова, обычно ID управления установлено.

  • Изменяет свойство этого IOService.

    Объявление

    C++

    virtual IOReturn setProperties( OSObject *properties);

    Параметры

    properties

    OSDictionary, содержащий свойства для изменения.

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

    Возвраты kIOReturnSuccess на успехе.

    Обсуждение

    Когда пользовательский клиент изменяет свойство этого IOAudioControl, это вызывают. В этом случае это используется для изменения значения. Эта функция ищет то свойство и затем вызывает setValue () через IOCommandGate и setValueAction ().

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

    Объявление

    C++

    virtual void setReadOnlyFlag();

  • Зашедший init время для установки подтипа управления.

    Объявление

    C++

    virtual void setType( UInt32 type);

  • Зашедший init время для установки типа управления.

    Объявление

    C++

    virtual void setSubType( UInt32 subType);

  • Зашедший init время для установки подтипа управления.

    Объявление

    C++

    virtual void setType( UInt32 type);

  • Зашедший init время для установки типа управления.

    Объявление

    C++

    virtual void setSubType( UInt32 subType);

  • Зашедший init время для установки использования управления.

    Объявление

    C++

    virtual void setUsage( UInt32 usage);

  • Устанавливает значение для этого управления.

    Объявление

    C++

    virtual IOReturn setValue( OSObject *newValue);

    Параметры

    newValue

    Новое значение для этого управления.

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

    Возвраты kIOReturnSuccess, если успешно установлено значение.

    Обсуждение

    Когда значение управления изменяется, вызов выполняется к performValueChange (). Если тот вызов успешно выполняется, значение установлено, и sendValueChangeNotification () вызывают, чтобы отправить уведомление пользовательским клиентам. Эта функция должна быть вызвана на IOWorkLoop.

  • Действие IOCommandGate, вызывающее setValue () при содержании IOCommandGate.

    Объявление

    C++

    static IOReturn setValueAction( OSObject *owner, void *arg1, void *arg2, void *arg3, void *arg4);

    Параметры

    owner

    Владелец IOCommandGate (IOAudioControl в этом случае).

    arg1

    Новое значение для IOAudioControl.

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

    Возвращает результат setValue () - kIOReturnSuccess на успехе.

    Обсуждение

    Это необходимо, чтобы позволить setValue () быть вызванным на IOWorkLoop.

  • Запускает недавно создаваемый IOAudioControl.

    Объявление

    C++

    virtual bool start( IOService *provider);

    Параметры

    provider

    IOAudioPort или IOAudioEngine, которому принадлежит это управление.

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

    Возвращает true на успехе.

    Обсуждение

    Это вызывает автоматически IOAudioPort, когда addAudioControl () вызывают или IOAudioEngine, когда вызывают addDefaultAudioControl (). Это только вызовет первый вызов любому addAudioControl () или addDefaultAudioControl ().

  • Когда провайдер уходит, останавливает управление.

    Объявление

    C++

    virtual void stop( IOService *provider);

    Параметры

    provider

    IOAudioPort или IOAudioEngine, которому принадлежит это управление.

  • Вызванный setValue () для обновления значения и реестра.

    Объявление

    C++

    virtual IOReturn updateValue( OSObject *newValue);

    Параметры

    newValue

    Новое значение к b обновляется.

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

    Возвраты kIOReturnSuccess, если успешно обновляется значение.

    Обсуждение

    Это также вызывает sendValueChangedNotification (), чтобы отправить уведомления пользовательским клиентам.

  • Вызванный setValue (), чтобы проверить, что значение допустимо.

    Объявление

    C++

    virtual IOReturn validateValue( OSObject *newValue);

    Параметры

    newValue

    Новое значение, которое будет проверено.

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

    Возвраты kIOReturnSuccess, если значение допустимо.

  • Статическая функция, выделяющая новый IOAudioControl с данными атрибутами.

    Объявление

    C++

    static IOAudioControl *withAttributes( UInt32 type, OSObject *initialValue, UInt32 channelID, const char *channelName = 0, UInt32 cntrlID = 0, UInt32 subType = 0, UInt32 usage = 0);

    Параметры

    type

    Тип управления. Общие, известные типы определяются в IOAudioTypes.h. Они в настоящее время состоят из kIOAudioControlTypeLevel, kIOAudioControlTypeToggle, kIOAudioControlTypeSelector.

    channelID

    ID канала (ов), что акты о контроле на. Общий IDs расположен в IOAudioTypes.h.

    channelName

    Дополнительное имя для канала. Общие названия расположены в IOAudioDefines.h. Любое имя, не определенное в IOAudioDefines.h, должно быть локализовано, чтобы быть должным образом выведенным на экран на нескольких языках.

    cntrlID

    Дополнительный ID для управления, которое может использоваться для однозначного определения средств управления

    subType

    Дополнительный подтип, определенный для данного типа

    usage

    Дополнительное значение, указывающее, как будет использоваться управление. В настоящее время определяемые использования являются kIOAudioControlUsageInput, kIOAudioControlUsageOutput и kIOAudioControlUsagePassThru. Когда управление установлено как управление по умолчанию на IOAudioEngine, это значение используется.

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

    Возвращает недавно выделенный и инициализированный IOAudioControl.

Обратные вызовы

  • Когда значение должно быть изменено, функция-обработчик раньше делала уведомление.

    Объявление

    C++

    typedef IOReturn ( *IntValueChangeHandler)( OSObject *target, IOAudioControl *audioControl, SInt32 oldValue, SInt32 newValue);

    Параметры

    target

    Когда обработчик был зарегистрирован, ссылка предоставила.

    audioControl

    Изменяющийся IOAudioControl.

    oldValue

    Старое значение управления.

    newValue

    Новое значение управление изменяется на.

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

    Когда аппаратные средства успешно обновляются, должен возвратить kIOReturnSuccess.

    Оператор импорта

    Objective C

    #include <IOAudioControl.h>;

    Доступность

    Доступный в OS X v10.1 через OS X v10.5.

Переменные экземпляра

  • IOWorkLoop для драйвера аудио - совместно использованный от IOAudioDevice.

    Объявление

    C++

    IOWorkLoop *workLoop;

  • Список пользовательских клиентов, запросивших уведомления изменения значения.

    Объявление

    C++

    OSSet *userClients;

  • Внутреннее состояние, отслеживающее того, когда был запущен IOAudioControl.

    Объявление

    C++

    bool isStarted;

  • Дополнительный идентификатор, который может использоваться для идентификации управления.

    Объявление

    C++

    UInt32 controlID;

  • IOCommandGate для этого управления - присоединенный к водительскому IOWorkLoop.

    Объявление

    C++

    IOCommandGate *commandGate;

  • Список пользовательских клиентов, запросивших уведомления изменения значения.

    Объявление

    C++

    OSSet *userClients;

  • ID канала это управление, влияние - может быть kIOAudioControlChannelIDAll, если это представляет все каналы.

    Объявление

    C++

    UInt32 channelID;