Compartilhar via


Executando E/S de arquivo de memória

Os serviços de E/S do arquivo multimídia permitem tratar um bloco de memória como um arquivo. Isso pode ser útil se você já tiver uma imagem de arquivo na memória. Os arquivos de memória permitem reduzir o número de condições de caso especial em seu código porque, para fins de E/S, você pode tratar arquivos de memória como se fossem arquivos baseados em disco. Você também pode usar arquivos de memória com a área de transferência.

Assim como acontece com buffers de E/S, os arquivos de memória podem usar a memória alocada pelo aplicativo ou pelo gerenciador de E/S do arquivo. Além disso, os arquivos de memória podem ser expansíveis ou não podem ser expandidos. Quando o gerenciador de E/S do arquivo atinge o final de um arquivo de memória expansível, ele expande o arquivo de memória por um incremento predefinido.

Para abrir um arquivo de memória, use a função mmioOpen com o parâmetro szFilename definido como NULL e o sinalizador MMIO_READWRITE definido no parâmetro dwOpenFlags . Defina o parâmetro lpmmioinfo para apontar para uma estrutura MMIOINFO que foi configurada da seguinte maneira:

  1. Defina o membro pIOProc como NULL.
  2. Defina o membro fccIOProc como FOURCC_MEM.
  3. Defina o membro pchBuffer para apontar para o bloco de memória. Para solicitar que o gerenciador de E/S do arquivo aloque o bloco de memória, defina pchBuffer como NULL.
  4. Defina o membro cchBuffer como o tamanho inicial do bloco de memória.
  5. Defina o membro adwInfo como o tamanho mínimo de expansão do bloco de memória. Para um arquivo de memória não existente, defina adwInfo como NULL.
  6. Defina todos os outros membros como zero.

Não há restrições na alocação de memória para uso como um arquivo de memória não existente.