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,否则返回错误。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
无法扩展指定的内存文件,可能是因为 MMIOINFO 结构的 adwInfo 成员在对 mmioOpen 函数的初始调用中设置为零。 |
|
重新填充缓冲区时出错。 |
|
缓冲区的内容无法写入磁盘。 |
|
内存不足,无法扩展内存文件以供进一步写入。 |
|
未为缓冲 I/O 打开指定的文件。 |
注解
如果打开文件进行读取,则会从磁盘填充 I/O 缓冲区。 如果打开文件进行写入,并在 MMIOINFO 结构的 dwFlags 成员中设置了MMIO_DIRTY标志,则会将缓冲区写入磁盘。 更新 MMIOINFO 结构的 pchNext、pchEndRead 和 pchEndWrite 成员,以反映 I/O 缓冲区的新状态。
如果打开指定的文件进行写入或读取和写入,则会在读取下一个缓冲区之前将 I/O 缓冲区刷新到磁盘。 如果由于磁盘已满而无法将 I/O 缓冲区写入磁盘, mmioAdvance 将返回MMIOERR_CANNOTWRITE。
如果指定的文件仅用于写入,则必须指定MMIO_WRITE标志。
如果已写入 I/O 缓冲区,则必须在调用 mmioAdvance 之前,在 MMIOINFO 结构的 dwFlags 成员中设置 MMIO_DIRTY 标志。 否则,缓冲区将不会写入磁盘。
如果到达文件末尾,即使无法读取更多数据, mmioAdvance 仍会成功返回。 若要为文件末尾检查,检查调用 mmioAdvance 后 MMIOINFO 结构的 pchNext 和 pchEndRead 成员是否相等。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | mmiscapi.h (包括 Mmiscapi.h、Windows.h) |
Library | Winmm.lib |
DLL | Winmm.dll |