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


Функция modMessage

Функция modMessage — это функция точки входа для выходных драйверов цифрового интерфейса музыкального инструмента (MIDI) и внутренних драйверов синтезатора. Дополнительные сведения о сообщениях звуковых устройств, связанных с MIDI, см. в разделе Сообщения аудиоустройства для MIDI.

Синтаксис

DWORD modMessage(
   UINT      uDeviceID,
   UINT      uMsg,
   DWORD_PTR dwUser,
   DWORD_PTR dwParam1,
   DWORD_PTR dwParam2
);

Параметры

  • uDeviceID
    Указывает идентификатор целевого устройства. Идентификаторы устройств являются последовательными и имеют начальное значение, равное нулю, и конечное значение, равное 1 меньше, чем количество устройств, поддерживаемых драйвером.

  • uMsg
    Указывает сообщение, которое WINMM отправляет драйверу в ответ на вызов клиентского приложения.

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

  • dwParam1
    Задает параметр, зависящий от сообщений.

  • dwParam2
    Задает параметр, зависящий от сообщений. Если существуют флаги, предоставляющие дополнительные сведения драйверу, который работает с modMessage, WINMM использует этот параметр для передачи флагов.

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

Функция modMessage возвращает MMSYSERR_NOERROR, если она может успешно обработать сообщение, полученное от MMSYSTEM. В противном случае возвращается одно из следующих сообщений об ошибке.

Код возврата Описание
MMSYSERR_ERROR

Незаданная ошибка.

MMSYSERR_BADDEVICEID

Указанный идентификатор устройства выходит за пределы диапазона.

MMSYSERR_NOTENABLED

Не удалось загрузить или инициализировать драйвер.

MMSYSERR_ALLOCATED

Указанное устройство уже выделено.

MMSYSERR_INVALHANDLE

Дескриптор указанного устройства недопустим.

MMSYSERR_NODRIVER

Отсутствует драйвер устройства.

MMSYSERR_NOMEM

Ошибка выделения памяти.

MMSYSERR_NOTSUPPORTED

Функция, запрошенная сообщением, не поддерживается.

MMSYSERR_BADERRNUM

Значение ошибки выходит за пределы диапазона. Дополнительные сведения см. в разделе Примечания.

MMSYSERR_INVALFLAG

Недопустимый флаг передан в modMessage(с помощью dwParam2).

MMSYSERR_INVALPARAM

В modMessage передан недопустимый параметр.

MMSYSERR_HANDLEBUSY

Указанный дескриптор используется одновременно другим потоком (например, потоком обратного вызова).

MMSYSERR_INVALIDALIAS

Указанный псевдоним не найден.

MMSYSERR_BADDB

Неправильная база данных реестра.

MMSYSERR_KEYNOTFOUND

Указанный раздел реестра не найден.

MMSYSERR_READERROR

Ошибка чтения реестра.

MMSYSERR_WRITEERROR

Ошибка записи в реестр.

MMSYSERR_DELETEERROR

Ошибка удаления реестра.

MMSYSERR_VALNOTFOUND

Указанное значение реестра не найдено.

MMSYSERR_NODRIVERCB

Драйвер, работающий с modMessage , не вызывает DriverCallback.

MMSYSERR_MOREDATA

ModMessage имеет больше возвращаемых данных.

MMSYSERR_LASTERROR

Указывает, что это последняя ошибка в диапазоне значений ошибок. Дополнительные сведения см. в разделе "Примечания".

Комментарии

Сообщения аудиоустройства — это системные константы. Поэтому, когда modMessage получает сообщение звукового устройства, он использует оператор switch для определения выполняемого действия на основе значения сообщения.

Диапазон сообщений об ошибках, которые может вернуть modMessage , зависит от сообщения, которое обрабатывалось при возникновении ошибки. Числовые значения сообщений об ошибках MMSYSERR_ начинаются с нуля (для MMSYSERR_NOERROR) и продолжаются с MMSYSERR_BASE + n, где n — целое число от 1 до 21. Значение для MMSYSERR_BASE является определенной константой. Дополнительные сведения о MSYSERR_BASE и сообщениях об ошибках MMSYSERR_ см. в разделах Mmsystem.h в Windows SDK и Mmddk.h в WDK соответственно.

Требования

Целевая платформа

Персональный компьютер

Версия

Доступно в операционных системах Windows XP и более поздних версий.

Заголовок

Mmddk.h (включая Mmddk.h, Mmsystem.h или Windows.h)

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

MODM_OPEN