Spec-Zone .ru
спецификации, руководства, описания, API
ADC домой > Ссылочная библиотека> Ссылка> Аудио> Core Audio> Ссылка Серверной инфраструктуры Core MIDI

 


MIDIDriverInterface

Наследовался от:

структура

Объявленный в:

Обзор

Интерфейс COM-стиля к драйверу MIDI.

Обсуждение

Это - функциональный табличный интерфейс к драйверу MIDI. Оба использования драйверов версии 1 и 2

эта та же таблица указателей функции (за исключением отмеченного).

Драйверы, поддерживающие и интерфейсы версии 1 и версии 2, могут сказать, какая версия сервера работает путем проверки для наблюдения или kMIDIDriverInterface2ID или

kMIDIDriverInterfaceID передается функции фабрики. Если интерфейс версии 1 требуют, драйвер должен вести себя, как будто это - драйвер версии 1.



Функции

Сконфигурировать
EnableSource
FindDevices
Сброс
Монитор
Отправить
Запустить
Остановиться

Сконфигурировать


OSStatus ( *Configure)(
    MIDIDriverRef self,
    MIDIDeviceRef device);  
Обсуждение

не в настоящее время используемый


EnableSource


OSStatus ( *EnableSource)(
    MIDIDriverRef self,
    MIDIEndpointRef src,
    Boolean enabled);  
Обсуждение

Клиент открыл или закрыл соединение, и теперь сервер говорит драйверу, которые вводят из определенного источника или делает или не имеет никаких слушателей в

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

не генерировать входящий MIDI I/O для того источника.


FindDevices


OSStatus ( *FindDevices)(
    MIDIDriverRef self,
    MIDIDeviceListRef devList);  
Обсуждение

Это только вызывают для драйверов версии 1. Сервер запрашивает, чтобы драйвер обнаружил присутствующие устройства. Для каждого настоящего устройства должен драйвер

создайте MIDIDeviceRef с объектами, с помощью MIDIDeviceCreate и MIDIDeviceAddEntity, и добавьте устройство к предоставленному MIDIDeviceListRef, с помощью

MIDIDeviceListAddDevice.

Драйвер не должен сохранять ссылки на создаваемые устройства и объекты.


Сброс


OSStatus ( *Flush)(
    MIDIDriverRef self,
    MIDIEndpointRef dest,
    void *destRefCon1,
    void *destRefCon2);  
Обсуждение

Только для драйверов версии 2 (новый для CoreMIDI 1.1).

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

драйвер должен не запланировать весь вывод ожидания всем местам назначения.


Монитор


OSStatus ( *Monitor)(
    MIDIDriverRef self,
    MIDIEndpointRef dest,
    const MIDIPacketList *pktlist);  
Обсуждение

Только для драйверов версии 2 (новый для CoreMIDI 1.1).

Некоторые специализированные драйверы (например, контрольный дисплей MIDI) могут хотеть прервать и смотреть на все исходящие сообщения MIDI. После того, как драйвер вызывает

MIDIDriverEnableMonitoring (истина) на себе, эта функция вызвана с исходящими пакетами MIDI для всех мест назначения в системе. Функция монитора

не может полагаться на события MIDI, поступающие в порядок, вследствие средств расписания вперед MIDISERVER.


Отправить


OSStatus ( *Send)(
    MIDIDriverRef self,
    const MIDIPacketList *pktlist,
    void *destRefCon1,
    void *destRefCon2);  
Обсуждение

Отправьте MIDIPacketList в целевую конечную точку, refCons которой передаются как параметры.


Запустить


OSStatus ( *Start)(
    MIDIDriverRef self,
    MIDIDeviceListRef devList);  
Обсуждение

Сервер говорит драйверу начинать MIDI I/O.

Предоставленный список устройств содержит устройства, ранее расположенные FindDevices (в случае драйвера версии 1), или устройства, принадлежащие

этот драйвер и в настоящее время находится в текущем MIDISetup (для драйверов версии 2).

Предоставленные устройства могут или могут не все еще присутствовать. Драйвер версии 1 должен попытаться использовать столько устройств, сколько фактически присутствуют.

Драйвер версии 2 может выполнить вызовы, такие как MIDISetupAddDevice, MIDIDeviceAddEntity,

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

свойство kMIDIPropertyOffline к 1. Когда IORegistry изменяется, для обнаружения соединения и разъединения, драйвер версии 2 может также установить уведомления

устройства это хочет управлять. В эти времена также, драйвер может изменить kMIDIPropertyOffline устройств, и динамично изменить текущее состояние системы к

отразите присутствующие устройства. При передаче CFRunLoopRef IOKit в целях уведомления драйвер должен использовать основной runloop сервера, который является

полученный с CFRunLoopGetCurrent ().

Драйвер, вероятно, захочет выполнить итерации через целевые конечные точки и присвоить их драйвер refCons, чтобы идентифицировать многократные места назначения, когда Отправляют (),

вызванный.

Предоставленный список устройств остается принадлежавшим системе и, как может предполагаться, содержит только устройства, принадлежавшие этому драйверу. Драйвер может сохранить ссылки на устройства

в этом списке и любом это создает при выполнении.


Остановиться


OSStatus ( *Stop)(
    MIDIDriverRef self);  
Обсуждение

Сервер говорит драйверу завершать MIDI I/O. Все операции I/O, начатые в Запуске, или в результате последующего уведомления IOKit, должны быть

завершенный.

Последнее обновление: 06.06.2008