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


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

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

modMessage

MIDIOPENDESC

DriverCallback

MOM_OPEN