Compartir a través de


Función mmioAdvance (mmiscapi.h)

La función mmioAdvance avanza el búfer de E/S de un archivo configurado para el acceso directo al búfer de E/S con la función mmioGetInfo .

Sintaxis

MMRESULT mmioAdvance(
  HMMIO      hmmio,
  LPMMIOINFO pmmioinfo,
  UINT       fuAdvance
);

Parámetros

hmmio

Identificador de archivo de un archivo abierto mediante la función mmioOpen .

pmmioinfo

Puntero a la estructura MMIOINFO obtenida mediante la función mmioGetInfo . Esta estructura se usa para establecer la información del archivo actual y, a continuación, se actualiza después de que el búfer esté avanzado. Este parámetro es opcional.

fuAdvance

Marcas para la operación. Puede ser uno de los siguientes.

Valor Significado
MMIO_READ El búfer se rellena desde el archivo.
MMIO_WRITE El búfer se escribe en el archivo.

Valor devuelto

Devuelve MMSYSERR_NOERROR si se realiza correctamente o si se produce un error en caso contrario. Entre los valores de error posibles se incluyen los siguientes.

Código devuelto Descripción
MMIOERR_CANNOTEXPAND
El archivo de memoria especificado no se puede expandir, probablemente porque el miembro adwInfo de la estructura MMIOINFO se estableció en cero en la llamada inicial a la función mmioOpen .
MMIOERR_CANNOTREAD
Error al rellenar el búfer.
MMIOERR_CANNOTWRITE
El contenido del búfer no se pudo escribir en el disco.
MMIOERR_OUTOFMEMORY
No había suficiente memoria para expandir un archivo de memoria para su posterior escritura.
MMIOERR_UNBUFFERED
El archivo especificado no se abre para E/S almacenado en búfer.

Comentarios

Si el archivo se abre para leerlo, el búfer de E/S se rellena desde el disco. Si el archivo se abre para escribir y la marca de MMIO_DIRTY se establece en el miembro dwFlags de la estructura MMIOINFO , el búfer se escribe en el disco. Los miembros pchNext,pchEndRead y pchEndWrite de la estructura MMIOINFO se actualizan para reflejar el nuevo estado del búfer de E/S.

Si el archivo especificado se abre para escribir o para leer y escribir, el búfer de E/S se vacía en el disco antes de leer el búfer siguiente. Si el búfer de E/S no se puede escribir en el disco porque el disco está lleno, mmioAdvance devuelve MMIOERR_CANNOTWRITE.

Si el archivo especificado está abierto solo para escribir, se debe especificar la marca MMIO_WRITE.

Si ha escrito en el búfer de E/S, debe establecer la marca MMIO_DIRTY en el miembro dwFlags de la estructura MMIOINFO antes de llamar a mmioAdvance. De lo contrario, el búfer no se escribirá en el disco.

Si se alcanza el final del archivo, mmioAdvance todavía devuelve correctamente aunque no se puedan leer más datos. Para comprobar el final del archivo, compruebe si los miembros pchNext y pchEndRead de la estructura MMIOINFO son iguales después de llamar a mmioAdvance.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado mmiscapi.h (include Mmiscapi.h, Windows.h)
Library Winmm.lib
Archivo DLL Winmm.dll