функция MODM_OPEN
WINMM отправляет MODM_OPEN
сообщение функции modMessage драйвера вывода MIDI, чтобы выделить указанное устройство, которое может использовать клиентское приложение.
Синтаксис
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
Параметры
uDeviceID
Указывает идентификатор целевого устройства. Идентификаторы устройств являются последовательными и имеют начальное значение, равное нулю, и конечное значение, равное на единицу меньше числа устройств, поддерживаемых драйвером.uMsg
WINMM задает этому параметру значение MODM_OPEN при вызове modMessage для обработки этого сообщения.dwUser
Выходной драйвер MIDI должен заполнить это расположение данными экземпляраMODM_OPEN
, но только в ответ на .dwParam1
Этот параметр задает дальний указатель на структуру MIDIOPENDESC . Эта структура содержит дополнительные сведения для драйвера, такие как данные экземпляра от клиента и функция обратного вызова для клиента.dwParam2
Этот параметр задает флаги параметров, определяющие способ открытия устройства. Флаги могут быть любым из значений в следующей таблице.Flag Значение CALLBACK_EVENT
Если этот флаг указан, функция dwCallback в структуре MIDIOPENDESC считается дескриптором события.
CALLBACK_FUNCTION
Если этот флаг указан, предполагается, что dwCallback в структуре MIDIOPENDESC является адресом функции обратного вызова.
CALLBACK_THREAD
Если этот флаг указан, предполагается, что dwCallback в структуре MIDIOPENDESC является дескриптором потока.
CALLBACK_WINDOW
Если этот флаг указан, dwCallback в структуре MIDIOPENDESC считается дескриптором окна.
MIDI_IO_COOKED
Если этот флаг указан, устройство открывается в режиме потоковой передачи, и драйвер получает потоковые сообщения. Водитель должен иметь возможность справиться с любыми непредвиденными обстоятельствами, которые возникают. Например, драйвер должен иметь возможность асинхронного воспроизведения коротких и системных сообщений в потоке.
Возвращаемое значение
Функция modMessage возвращает MMSYSERR_NOERROR, если операция выполнена успешно. В противном случае возвращается одно из сообщений об ошибке в следующей таблице.
Код возврата | Описание |
---|---|
MMSYSERR_NOTENABLED | Не удалось загрузить или инициализировать драйвер. |
MMSYSERR_ALLOCATED | Устройство MIDI уже выделено максимальным количеством клиентов, поддерживаемых драйвером, или устройство не может быть открыто из-за ограничений системных ресурсов, отличных от памяти. |
MMSYSERR_NOMEM | Устройство не удается открыть из-за сбоя выделения или блокировки памяти. |
Комментарии
Драйвер должен иметь возможность определить количество клиентов, которые он может разрешить использовать определенное устройство. После открытия устройства для максимального числа клиентов, поддерживаемых драйвером, драйвер возвращает MMSYSERR_ALLOCATED для дополнительных запросов на открытие устройства. Если операция открытия выполнена успешно, драйвер использует функцию DriverCallback для отправки клиенту сообщения MOM_OPEN .
Требования
Целевая платформа |
Персональный компьютер |
Версия |
Доступно в операционных системах Windows XP и более поздних версий. |
Заголовок |
Mmddk.h (включая Mmddk.h, Mmsystem.h или Windows.h) |