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


Функция midiOutCachePatches (mmeapi.h)

Функция midiOutCachePatches запрашивает , чтобы внутреннее устройство синтезатора MIDI предварительно загрузить и кэшировать указанный набор исправлений.

Синтаксис

MMRESULT midiOutCachePatches(
  HMIDIOUT hmo,
  UINT     uBank,
  LPWORD   pwpa,
  UINT     fuCache
);

Параметры

hmo

Дескриптор для открытого устройства вывода MIDI. Это устройство должно быть внутренним синтезатором MIDI. Этот параметр также может быть дескриптором потока MIDI, приведения к HMIDIOUT.

uBank

Банк исправлений, которые следует использовать. Для этого параметра необходимо задать нулевое значение, чтобы кэшировать банк исправлений по умолчанию.

pwpa

Указатель на массив PATCHARRAY , указывающий исправления для кэширования или некэширования.

fuCache

Параметры операции кэша. Это может быть один из следующих флагов.

Значение Значение
MIDI_CACHE_ALL Кэширует все указанные исправления. Если все они не могут быть кэшироваться, он не кэширует их, очищает массив PATCHARRAY и возвращает MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT Кэширует все указанные исправления. Если они не могут быть кэшированы, он кэширует как можно больше исправлений, изменяет массив PATCHARRAY в соответствии с тем, какие исправления кэшировались, и возвращает MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Изменяет массив PATCHARRAY , чтобы указать, какие исправления кэшируются в данный момент.
MIDI_UNCACHE Удаляет указанные исправления и очищает массив PATCHARRAY.

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

Возвращает MMSYSERR_NOERROR в случае успешного выполнения или ошибку в противном случае. Возможные значения ошибок:

Код возврата Описание
MMSYSERR_INVALFLAG
Недопустимый флаг , указанный wFlags .
MMSYSERR_INVALHANDLE
Указанный дескриптор устройства недопустим.
MMSYSERR_INVALPARAM
Недопустимый массив, на который указывает lpPatchArray .
MMSYSERR_NOMEM
У устройства недостаточно памяти для кэширования всех запрошенных исправлений.
MMSYSERR_NOTSUPPORTED
Указанное устройство не поддерживает кэширование исправлений.

Комментарии

Некоторые синтезаторы не способны сохранять все исправления, загруженные одновременно, и должны загружать данные с диска при получении сообщений об изменении программы MIDI. Кэширование исправлений гарантирует, что указанные исправления будут немедленно доступны.

Каждый элемент массива PATCHARRAY представляет одно из 128 исправлений и имеет биты, заданные для каждого из 16 КАНАЛОВ MIDI, использующих конкретное исправление. Наименьший бит представляет физический канал 0, а самый значительный — физический канал 15 (0x0F). Например, если в физических каналах 0 и 8 используется исправление 0, для элемента 0 будет задано значение 0x0101.

Эта функция применяется только к внутренним устройствам синтезатора MIDI. Не все внутренние синтезаторы поддерживают кэширование исправлений. Чтобы узнать, поддерживает ли устройство кэширование исправлений, используйте флаг MIDICAPS_CACHE для тестирования члена dwSupport структуры MIDIOUTCAPS , заполненной функцией midiOutGetDevCaps .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header mmeapi.h (включая Windows.h)
Библиотека Winmm.lib
DLL Winmm.dll

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

Функции MIDI