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


Выполнение операций ввода-вывода файла памяти

Службы мультимедийного файлового ввода-вывода позволяют обрабатывать блок памяти как файл. Это может быть полезно, если у вас уже есть образ файла в памяти. Файлы памяти позволяют уменьшить количество особых условий в коде, так как для операций ввода-вывода можно обрабатывать файлы памяти так же, как если бы они были файлами на диске. Вы также можете использовать файлы памяти с буфером обмена.

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

Чтобы открыть файл памяти, используйте функцию mmioOpen с параметром szFilename , имеющим значение NULL , и флагом MMIO_READWRITE, установленным в параметре dwOpenFlags . Задайте параметр lpmmioinfo , чтобы он указывал на структуру MMIOINFO , которая была настроена следующим образом:

  1. Задайте для элемента pIOProcзначение NULL.
  2. Задайте для элемента fccIOProc значение FOURCC_MEM.
  3. Задайте элемент pchBuffer , чтобы он указывал на блок памяти. Чтобы запросить выделение блока памяти диспетчером файлового ввода-вывода, задайте для pchBufferзначение NULL.
  4. Задайте для элемента cchBuffer начальный размер блока памяти.
  5. Задайте для элемента adwInfo минимальный размер расширения блока памяти. Для неразрывного файла памяти задайте для adwInfoзначение NULL.
  6. Задайте для всех остальных членов значение 0.

Нет ограничений на выделение памяти для использования в качестве файла памяти, который не может быть необязаемой.