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