mmioAdvance 函数 (mmiscapi.h)

mmioAdvance 函数使用 mmioGetInfo 函数提升为直接 I/O 缓冲区访问而设置的文件的 I/O 缓冲区。

语法

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

parameters

hmmio

使用 mmioOpen 函数打开的文件的文件句柄。

pmmioinfo

指向使用 mmioGetInfo 函数获取的 MMIOINFO 结构的指针。 此结构用于设置当前文件信息,然后在高级缓冲区后更新它。 此参数是可选的。

fuAdvance

操作的标志。 可以是以下项之一。

含义
MMIO_READ 从文件中填充缓冲区。
MMIO_WRITE 缓冲区将写入文件。

返回值

如果成功,则返回MMSYSERR_NOERROR,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
MMIOERR_CANNOTEXPAND
无法扩展指定的内存文件,可能是因为 MMIOINFO 结构的 adwInfo 成员在对 mmioOpen 函数的初始调用中设置为零。
MMIOERR_CANNOTREAD
重新填充缓冲区时出错。
MMIOERR_CANNOTWRITE
缓冲区的内容无法写入磁盘。
MMIOERR_OUTOFMEMORY
内存不足,无法扩展内存文件以供进一步写入。
MMIOERR_UNBUFFERED
未为缓冲 I/O 打开指定的文件。

注解

如果打开文件进行读取,则会从磁盘填充 I/O 缓冲区。 如果打开文件进行写入,并在 MMIOINFO 结构的 dwFlags 成员中设置了MMIO_DIRTY标志,则会将缓冲区写入磁盘。 更新 MMIOINFO 结构的 pchNext、pchEndReadpchEndWrite 成员,以反映 I/O 缓冲区的新状态。

如果打开指定的文件进行写入或读取和写入,则会在读取下一个缓冲区之前将 I/O 缓冲区刷新到磁盘。 如果由于磁盘已满而无法将 I/O 缓冲区写入磁盘, mmioAdvance 将返回MMIOERR_CANNOTWRITE。

如果指定的文件仅用于写入,则必须指定MMIO_WRITE标志。

如果已写入 I/O 缓冲区,则必须在调用 mmioAdvance 之前,在 MMIOINFO 结构的 dwFlags 成员中设置 MMIO_DIRTY 标志。 否则,缓冲区将不会写入磁盘。

如果到达文件末尾,即使无法读取更多数据, mmioAdvance 仍会成功返回。 若要为文件末尾检查,检查调用 mmioAdvanceMMIOINFO 结构的 pchNextpchEndRead 成员是否相等。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 mmiscapi.h (包括 Mmiscapi.h、Windows.h)
Library Winmm.lib
DLL Winmm.dll