自定义服务

多媒体文件 I/O 服务使用 I/O 过程来处理与读取和写入不同类型的存储系统(如文件存档系统和数据库存储系统)关联的物理输入和输出。 标准文件系统和内存文件的预定义 I/O 过程存在,但可以使用 mmioInstallIOProc 函数提供用于访问唯一存储系统的自定义 I/O 过程。

若要使用自定义 I/O 过程打开文件,请使用 mmioOpen 函数。 在文件名中包含加号 (+) 或 CFSEPCHAR 常量,以将物理文件的名称与要打开的文件的元素的名称分开。 以下示例从名为 FILENAME 的文件打开名为“element”的文件元素。弧:

mmioOpen("filename.arc+element", NULL, MMIO_READ); 

当文件 I/O 管理器遇到加号登录文件名时,它会检查文件扩展名以确定要与文件关联的 I/O 过程。 在前面的示例中,文件 I/O 管理器将尝试使用与此关联的 I/O 过程。ARC 文件扩展名;此 I/O 过程是使用 mmioInstallIOProc 安装的。 如果未安装 I/O 过程, mmioOpen 将返回错误。

I/O 过程必须响应以下消息:

还可以使用 mmioSendMessage 函数创建自定义消息并将其发送到 I/O 过程。 如果定义自己的消息,请确保它们在MMIOM_USER常量定义的值或更高位置定义。

除了处理消息,I/O 过程还必须维护 mmioInFO 函数) 的 lpmmioinfo 参数指向的 MMIOINFO 结构 (lDiskOffset 成员。 lDiskOffset 成员必须始终包含下一个MMIOM_READ或MMIOM_WRITE消息将访问的位置的文件偏移量。 偏移量以字节为单位指定,相对于文件的开头。 I/O 过程可以使用 adwInfo 成员来维护任何必需的状态信息。 I/O 过程不应修改 MMIOINFO 结构中的任何其他成员。