Операционные системы. Учебное пособие. Марапулец Ю.В. - 228 стр.

UptoLike

Составители: 

который сообщает Windows, куда должны быть адресованы сообщения, посылаемые по-
следующими командами.
Второй параметр uMessage, представляет собой константу, например:
MCI_OPEN - Открывает устройство (начало сеанса).
MCI_CLOSE - Закрывает устройство (конец сеанса).
MCI_SET - Изменяет установки устройства.
MCI_PLAY - Начинает воспроизведение.
MCI_STOP - Прерывает выполнение текущей операции.
MCI_RECORD - Начинает запись звука.
MCI_SAVE - Сохраняет записанный фрагмент в виде файла.
Третий параметр dwFlags, обычно представляет собой комбинацию нескольких
флагов, которые помогают Windows интерпретировать команду. Набор возможных фла-
гов изменяется в зависимости от конкретного сообщения, но некоторые из них являются
общими для всех сообщений. Например, функция mciSendCommand() обычно работает
асинхронно. Когда эта команда инициирует операцию с устройством, она не ожидает
завершения выполнения этой операции, а немедленно завершается, в то время как уст-
ройство продолжает выполнение операции в фоновом режиме. Если необходимо знать,
когда выполнение операции закончится, следует установить флаг MCI_NOTIFY, и под-
система WinMM передаст сообщение о завершении, что может быть необходимым при
закрытии устройства по завершению воспроизведения звука. Флаг MCI_WAIT иниции-
рует синхронную работу (по команде mciSendCommand() выполнение программы оста-
навливается до тех пор, пока устройство не завершит выполнение текущей задачи).
Последний параметр dwParamBlock, также изменяется от сообщения к сообще-
нию. Он всегда представляет собой структурированную переменную, содержащую либо
информацию, которая необходима устройству для выполнения команды, либо пустые
поля, которые будут заполнены устройством в результате выполнения команды.
§ 9.3. Технология обработки формата RIFF
9.3.1. Структура формата RIFF
В целом следует отметить, что мультимедийные файлы соответствуют стандарт-
ному формату RIFF. Программистам, разрабатывающим мультимедийные приложения,
необходимо разбираться в структуре RIFF-файлов и знать особенности MMIO-функций,
предназначенных для записи и чтения этих файлов.
Протокол RIFF (Resource Interchange File Format - формат обмена файлами ресур-
сов) описывает файловую структуру с теговой организацией. Это означает, что файл
может быть разбит на ряд нерегулярных блоков, помеченных особыми короткими стро-
ками - тегами. Теги RIFF-файлов представляют собой четырехсимвольные коды, на-
пример RIFF, INFO или PAL. (Четвертым символом тега PAL является пробел.) Каждый
тег начинает блок данных (chunk). Наиболее важные блоки начинаются с тега RIFF и
могут содержать другие блоки, которые называются вложенными. RIFF-файлы всегда
начинаются с блока RIFF, а все остальные данные организованы в виде вложенных бло-
ков первого блока.
Каждый блок состоит из трех частей: тега, значения размера и двоичных данных.
Тег сообщает о типе последующих данных. Значение размера, имеющее тип DWORD,
указывает объем данных, содержащихся в блоке. В конце данных находится тег сле-
дующего блока, если таковой имеется. Файлы звукозаписей всегда содержат не менее
двух вложенных блоков: один из них предназначен для указания формата, а другой - для
самих данных. В некоторых блоках может быть записана информация об авторских пра-
230
который сообщает Windows, куда должны быть адресованы сообщения, посылаемые по-
следующими командами.
     Второй параметр uMessage, представляет собой константу, например:
MCI_OPEN - Открывает устройство (начало сеанса).
MCI_CLOSE - Закрывает устройство (конец сеанса).
MCI_SET - Изменяет установки устройства.
MCI_PLAY - Начинает воспроизведение.
MCI_STOP - Прерывает выполнение текущей операции.
MCI_RECORD - Начинает запись звука.
MCI_SAVE - Сохраняет записанный фрагмент в виде файла.
     Третий параметр dwFlags, обычно представляет собой комбинацию нескольких
флагов, которые помогают Windows интерпретировать команду. Набор возможных фла-
гов изменяется в зависимости от конкретного сообщения, но некоторые из них являются
общими для всех сообщений. Например, функция mciSendCommand() обычно работает
асинхронно. Когда эта команда инициирует операцию с устройством, она не ожидает
завершения выполнения этой операции, а немедленно завершается, в то время как уст-
ройство продолжает выполнение операции в фоновом режиме. Если необходимо знать,
когда выполнение операции закончится, следует установить флаг MCI_NOTIFY, и под-
система WinMM передаст сообщение о завершении, что может быть необходимым при
закрытии устройства по завершению воспроизведения звука. Флаг MCI_WAIT иниции-
рует синхронную работу (по команде mciSendCommand() выполнение программы оста-
навливается до тех пор, пока устройство не завершит выполнение текущей задачи).
     Последний параметр dwParamBlock, также изменяется от сообщения к сообще-
нию. Он всегда представляет собой структурированную переменную, содержащую либо
информацию, которая необходима устройству для выполнения команды, либо пустые
поля, которые будут заполнены устройством в результате выполнения команды.

     § 9.3. Технология обработки формата RIFF

     9.3.1. Структура формата RIFF

     В целом следует отметить, что мультимедийные файлы соответствуют стандарт-
ному формату RIFF. Программистам, разрабатывающим мультимедийные приложения,
необходимо разбираться в структуре RIFF-файлов и знать особенности MMIO-функций,
предназначенных для записи и чтения этих файлов.
     Протокол RIFF (Resource Interchange File Format - формат обмена файлами ресур-
сов) описывает файловую структуру с теговой организацией. Это означает, что файл
может быть разбит на ряд нерегулярных блоков, помеченных особыми короткими стро-
ками - тегами. Теги RIFF-файлов представляют собой четырехсимвольные коды, на-
пример RIFF, INFO или PAL. (Четвертым символом тега PAL является пробел.) Каждый
тег начинает блок данных (chunk). Наиболее важные блоки начинаются с тега RIFF и
могут содержать другие блоки, которые называются вложенными. RIFF-файлы всегда
начинаются с блока RIFF, а все остальные данные организованы в виде вложенных бло-
ков первого блока.
     Каждый блок состоит из трех частей: тега, значения размера и двоичных данных.
Тег сообщает о типе последующих данных. Значение размера, имеющее тип DWORD,
указывает объем данных, содержащихся в блоке. В конце данных находится тег сле-
дующего блока, если таковой имеется. Файлы звукозаписей всегда содержат не менее
двух вложенных блоков: один из них предназначен для указания формата, а другой - для
самих данных. В некоторых блоках может быть записана информация об авторских пра-



                                        230