mmioDescend 函数 (mmiscapi.h)

mmioDescend 函数将下降到使用 mmioOpen 函数打开的 RIFF 文件的区块中。 它还可以搜索给定区块。

语法

MMRESULT mmioDescend(
  HMMIO          hmmio,
  LPMMCKINFO     pmmcki,
  const MMCKINFO *pmmckiParent,
  UINT           fuDescend
);

parameters

hmmio

打开的 RIFF 文件的文件句柄。

pmmcki

指向接收 MMCKINFO 结构的缓冲区的指针。

pmmckiParent

指向可选的应用程序定义的 MMCKINFO 结构的指针,该结构标识要搜索的区块的父级。 如果此参数不为 NULL则 mmioDescend 假定在调用 mmioDescend 进入父区块时填充了它引用的 MMCKINFO 结构,并且 mmioDescend 在父区块中搜索区块。 如果未指定父区块,请将此参数设置为 NULL

fuDescend

搜索标志。 如果未指定标志, 则 mmioDescend 从当前文件位置开始下降到区块中。 定义了以下值。

含义
MMIO_FINDCHUNK 搜索具有指定区块标识符的区块。
MMIO_FINDLIST 搜索具有区块标识符“LIST”且具有指定表单类型的区块。
MMIO_FINDRIFF 搜索具有区块标识符“RIFF”且具有指定表单类型的区块。

返回值

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

返回代码 说明
MMIOERR_CHUNKNOTFOUND
文件末尾 (或父区块的末尾(如果在找到所需区块之前已到达) )。

注解

“RIFF”区块由一个四字节区块标识符组成, (类型 FOURCC) ,后跟一个四字节区块大小 (类型 DWORD) ,后跟区块的数据部分,如果数据部分的大小为奇数,则后跟空板字节。 如果区块标识符为“RIFF”或“LIST”,则区块数据部分的前四个字节是窗体类型或列表类型 (FOURCC) 。

如果使用 mmioDescend 搜索区块,请确保文件位置在调用函数之前位于区块的开头。 搜索从当前文件位置开始,一直持续到文件的末尾。 如果指定了父区块,则调用 mmioDescend 之前,文件位置应位于父区块内的某个位置。 在这种情况下,搜索从当前文件位置开始,一直持续到父区块的末尾。

如果 mmioDescend 在搜索区块时失败,则当前文件位置未定义。 如果 mmioDescend 成功,则更改当前文件位置。 如果区块是“RIFF”或“LIST”区块,则新文件位置将位于窗体类型或列表类型之后, (块) 开头的 12 个字节。 对于其他区块,新文件位置将是区块数据部分的开头, (块) 开头的 8 个字节。

mmioDescend 函数使用以下信息填充 lpck 参数指向的 MMCKINFO 结构:

  • ckid 成员是区块。 如果为 wFlags 指定了 MMIO_FINDCHUNK、MMIO_FINDRIFF 或 MMIO_FINDLIST 标志,则 MMCKINFO 结构还用于将参数传递给 mmioDescend。 在这种情况下, ckid 成员指定要搜索的区块标识符、表单类型或列表类型的四个字符代码。
  • cksize 成员是区块的数据部分的大小(以字节为单位)。 大小包括窗体类型或列表类型 ((如果有任何) ),但不包括 8 字节区块标头或数据 (末尾的填充字节(如果有任何) )。
  • 如果 ckid 为“RIFF”,则 fccType 成员为窗体类型;如果 ckid 为“LIST”,则为列表类型。 否则为 NULL
  • dwDataOffset 成员是区块数据部分开头的文件偏移量。 如果区块是“RIFF”区块或“LIST”区块,则此成员是窗体类型或列表类型的偏移量。
  • dwFlags 成员包含有关区块的其他信息。 目前,此信息未使用,并且设置为零。

要求

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