Выполнение операций ввода-вывода файла памяти
Службы мультимедийного файлового ввода-вывода позволяют обрабатывать блок памяти как файл. Это может быть полезно, если у вас уже есть образ файла в памяти. Файлы памяти позволяют уменьшить количество особых условий в коде, так как для операций ввода-вывода можно обрабатывать файлы памяти так же, как если бы они были файлами на диске. Вы также можете использовать файлы памяти с буфером обмена.
Как и в случае с буферами ввода-вывода, файлы памяти могут использовать память, выделенную приложением или диспетчером файловых операций ввода-вывода. Кроме того, файлы памяти могут быть как расширяемыми, так и необязаемыми. Когда диспетчер файлового ввода-вывода достигает конца расширяемого файла памяти, он расширяет файл памяти с помощью предопределенного приращения.
Чтобы открыть файл памяти, используйте функцию mmioOpen с параметром szFilename , имеющим значение NULL , и флагом MMIO_READWRITE, установленным в параметре dwOpenFlags . Задайте параметр lpmmioinfo , чтобы он указывал на структуру MMIOINFO , которая была настроена следующим образом:
- Задайте для элемента pIOProcзначение NULL.
- Задайте для элемента fccIOProc значение FOURCC_MEM.
- Задайте элемент pchBuffer , чтобы он указывал на блок памяти. Чтобы запросить выделение блока памяти диспетчером файлового ввода-вывода, задайте для pchBufferзначение NULL.
- Задайте для элемента cchBuffer начальный размер блока памяти.
- Задайте для элемента adwInfo минимальный размер расширения блока памяти. Для неразрывного файла памяти задайте для adwInfoзначение NULL.
- Задайте для всех остальных членов значение 0.
Нет ограничений на выделение памяти для использования в качестве файла памяти, который не может быть необязаемой.