Функция midiOutMessage (mmeapi.h)
Функция midiOutMessage отправляет сообщение драйверам устройств MIDI. Эта функция используется только для сообщений, относящихся к драйверу, которые не поддерживаются API MIDI.
Синтаксис
MMRESULT midiOutMessage(
HMIDIOUT hmo,
UINT uMsg,
DWORD_PTR dw1,
DWORD_PTR dw2
);
Параметры
hmo
Идентификатор устройства MIDI, которое получает сообщение. Необходимо привести идентификатор устройства к типу дескриптора HMIDIOUT . Если вместо идентификатора устройства указать дескриптор, функция завершается ошибкой и возвращает код ошибки MMSYSERR_NOSUPPORT.
uMsg
Сообщение для отправки.
dw1
Параметр message.
dw2
Параметр message.
Возвращаемое значение
Возвращает значение, возвращаемое драйвером звукового устройства.
Комментарии
Сообщение DRV_QUERYDEVICEINTERFACE
запрашивает имя интерфейса устройства waveIn, waveOut, midiIn, midiOut или микшера .
Для DRV_QUERYDEVICEINTERFACE
dwParam1 — это указатель на буфер, выделенный вызывающим объектом, в который функция записывает строку Юникода, завершающуюся null, содержащую имя интерфейса устройства. Если у устройства нет интерфейса устройства, длина строки равна нулю.
Для DRV_QUERYDEVICEINTERFACE
dwParam2 указывает размер буфера в байтах. Это входной параметр функции. Вызывающий объект должен указать размер, который больше или равен размеру буфера, полученному DRV_QUERYDEVICEINTERFACESIZE сообщением.
Сообщение DRV_QUERYDEVICEINTERFACE поддерживается в Windows Me, Windows 2000 и более поздних версий. Это сообщение допустимо только для функций waveInMessage, waveOutMessage, midiInMessage, midiOutMessage и mixerMessage . Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Следующие две константы сообщений используются вместе для получения имен интерфейса устройства:
- DRV_QUERYDEVICEINTERFACESIZE
- DRV_QUERYDEVICEINTERFACE
Дополнительные сведения см. в разделе Получение имени интерфейса устройства.
Сообщение DRV_QUERYDEVICEINTERFACESIZE
запрашивает размер буфера, необходимого для хранения имени интерфейса устройства.
Для DRV_QUERYDEVICEINTERFACESIZE
dwParam1 — это указатель на размер буфера. Этот параметр указывает на переменную ULONG, в которую функция записывает требуемый размер буфера в байтах. Размер включает в себя дисковое пространство для завершающего значения NULL строки имени. Размер равен нулю, если идентификатор устройства идентифицирует устройство без интерфейса устройства.
Для DRV_QUERYDEVICEINTERFACESIZE
dwParam2 не используется. Задайте для этого параметра нулевое значение.
Это сообщение допустимо только для функций waveInMessage, waveOutMessage, midiInMessage, midiOutMessage и mixerMessage . Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Размер буфера, полученный этим сообщением, выражается в виде количества байтов. Он указывает размер буфера, необходимого для хранения строки Юникода, завершаемой null, которая содержит имя интерфейса устройства. Вызывающий объект выделяет буфер указанного размера и использует DRV_QUERYDEVICEINTERFACE сообщение для получения строки имени интерфейса устройства.
Дополнительные сведения см. в разделе Получение имени интерфейса устройства.
Сообщение DRV_QUERYDEVNODE
запрашивает номер devnode, назначенный устройству диспетчером Plug and Play.
Для DRV_QUERYDEVNODE
dwParam1 — это указатель на выделенную вызывающим объектом переменную DWORD, в которую функция записывает номер devnode. Если устройству не назначен devnode, функция устанавливает для этой переменной значение 0.
Для DRV_QUERYDEVNODE
dwParam2 не используется. Задайте для этого параметра нулевое значение.
В Windows 2000 и более поздних версиях сообщение всегда возвращает MMSYSERR_NOTSUPPORTED. Это сообщение допустимо только для функций waveInMessage, waveOutMessage, midiInMessage, midiOutMessage и mixerMessage . Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Сообщение DRV_QUERYMAPPABLE
запрашивает, может ли указанное устройство использоваться сопоставителями.
Для DRV_QUERYMAPPABLE
dwParam1 не используется. Задайте для этого параметра нулевое значение.
Для DRV_QUERYMAPPABLE
dwParam2 не используется. Задайте для этого параметра нулевое значение.
Это сообщение допустимо только для функций waveInMessage, waveOutMessage, midiInMessage, midiOutMessage, mixerMessage и auxOutMessage . Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Когда программа приложения открывает средство сопоставления вместо определенного звукового устройства, система вставляет средство сопоставления между приложением и доступными устройствами. Сопоставителя выбирает соответствующее устройство, сопоставляя требования приложения с одним из доступных устройств. Дополнительные сведения о модулях сопоставления см. в документации по Microsoft Windows SDK.
Сообщение DRVM_MAPPER_CONSOLEVOICECOM_GET
извлекает идентификатор устройства предпочтительного устройства голосовой связи.
Для DRVM_MAPPER_CONSOLEVOICECOM_GET
dwParam1 — это указатель на идентификатор устройства. Этот параметр указывает на переменную DWORD, в которую функция записывает идентификатор текущего предпочтительного устройства голосовой связи. Функция записывает значение (-1), если нет устройства, которое считается предпочтительным устройством голосовой связи.
Для DRVM_MAPPER_CONSOLEVOICECOM_GET
dwParam2 — это указатель на флаги состояния. Этот параметр указывает на переменную DWORD, в которую функция записывает флаги состояния устройства. В настоящее время определен только один бит флага: DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY.
Это сообщение допустимо только для функций waveInMessage и waveOutMessage . Когда вызывающий объект вызывает эти две функции с сообщением DRVM_MAPPER_CONSOLEVOICECOM_GET, вызывающий объект должен указать идентификатор устройства в качестве WAVE_MAPPER, а затем привести это значение к соответствующему типу дескриптора. Для функций waveInMessage, waveOutMessage, midiInMessage, midiOutMessage или mixerMessage вызывающий объект должен привести идентификатор устройства к дескриптору типа HWAVEIN, HWAVEOUT, HMIDIIN, HMIDIOUT или HMIXER соответственно. Обратите внимание, что если вызывающий объект предоставляет допустимый дескриптор вместо идентификатора устройства для этого параметра, функция завершается ошибкой и возвращает код ошибки MMSYSERR_NOSUPPORT.
Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Это сообщение позволяет определить, какое устройство предпочтительнее для голосовой связи, в отличие от DRVM_MAPPER_PREFERRED_GET сообщения, которое определяет, какое устройство предпочтительнее для всех остальных звуковых функций.
Например, предпочтительным устройством waveOut для голосовой связи может быть наушник в гарнитуре, но предпочтительным устройством waveOut для всех остальных звуковых функций может быть набор стереодинамиков.
Если бит флага DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY установлен в расположении DWORD, на которое указывает dwParam2, API-интерфейсы waveIn и waveOut используют только текущее предпочтительное устройство голосовой связи и не выполняют поиск других доступных устройств, если предпочтительное устройство недоступно. Флаг, который выводится вызовом waveInMessage или waveOutMessage , применяется к предпочтительному устройству голосовой связи для интерфейсов API waveIn и waveOut, независимо от того, выполняется ли вызов для waveInMessage или waveOutMessage. Дополнительные сведения см. в разделе Предпочитаемый идентификатор устройства Voice-Communications.
Сообщение DRVM_MAPPER_PREFERRED_GET
возвращает идентификатор предпочтительного звукового устройства.
Для DRVM_MAPPER_PREFERRED_GET
dwParam1 — это указатель на идентификатор устройства. Этот параметр указывает на переменную DWORD, в которую функция записывает идентификатор текущего предпочтительного устройства. Функция записывает значение (-1), если нет устройства, которое считается предпочтительным.
Для DRVM_MAPPER_PREFERRED_GET
dwParam2 — это указатель на флаги состояния. Этот параметр указывает на переменную DWORD, в которую функция записывает флаги состояния устройства. В настоящее время определен только один бит флага (только для вызовов waveInMessage и waveOutMessage ): DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY.
Это сообщение допустимо только для функций waveInMessage, waveOutMessage и midiOutMessage . Когда вызывающий объект вызывает эти функции с DRVM_MAPPER_PREFERRED_GET сообщением, вызывающий объект должен сначала указать идентификатор устройства как WAVE_MAPPER (для waveInMessage или waveOutMessage) или MIDI_MAPPER (для midiOutMessage), а затем привести это значение к соответствующему типу дескриптора. Для функций waveInMessage, waveOutMessage или midiOutMessage вызывающий объект должен привести идентификатор устройства к типу дескриптора HWAVEIN, HWAVEOUT или HMIDIOUT соответственно. Обратите внимание, что если вызывающий объект предоставляет допустимый дескриптор вместо идентификатора устройства для этого параметра, функция завершается ошибкой и возвращает код ошибки MMSYSERR_NOSUPPORT.
Система перехватывает это сообщение и возвращает соответствующее значение, не отправляя сообщение драйверу устройства. Общие сведения о функциях xxxMessage , перехваченных системой, см. в разделе System-Intercepted Device Messages.
Это сообщение позволяет определить, какое устройство предпочтительнее для звуковых функций в целом, в отличие от DRVM_MAPPER_CONSOLEVOICECOM_GET сообщения, которое определяет, какое устройство предпочтительнее для голосовой связи.
Если бит флага DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY задан в расположении DWORD, на которое указывает dwParam2, API waveIn и waveOut используют только текущее предпочтительное устройство и не выполняют поиск других доступных устройств, если предпочитаемое устройство недоступно. Обратите внимание, что функция midiOutMessage не выводит этот флаг . API midiOut всегда использует только предпочтительное устройство. Флаг, который выводится вызовом waveInMessage или waveOutMessage , применяется к предпочтительному устройству для API waveIn и waveOut , независимо от того, выполняется ли вызов waveInMessage или waveOutMessage.
Функции xxxMessage принимают это значение вместо допустимого дескриптора устройства, чтобы позволить приложению определить идентификатор устройства по умолчанию, не открывая устройство. Дополнительные сведения см. в разделе Доступ к идентификатору предпочтительного устройства.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | mmeapi.h (включая Windows.h) |
Библиотека | Winmm.lib |
DLL | Winmm.dll |