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


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

Функция, связанная с этой страницей, мультимедийный ввод-вывод файлов, является устаревшей функцией. Он был заменен читывателем источника. средство чтения источников оптимизировано для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, по возможности, в новом коде использовать средство чтения источников вместо мультимедийного ввода-вывода файлов. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

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

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

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

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

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