Функция 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) |