mmioDescend 関数 (mmiscapi.h)

mmioDescend 関数は、mmioOpen 関数を使用して開かれた RIFF ファイルのチャンクに降順で表示されます。 また、特定のチャンクを検索することもできます。

構文

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

パラメーター

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" チャンクは、4 バイトのチャンク識別子 (型 FOURCC) で構成され、その後に 4 バイトのチャンク サイズ ( 型 DWORD) が続き、チャンクのデータ部分が続き、データ部分のサイズが奇数の場合は null パッド バイトが続きます。 チャンク識別子が "RIFF" または "LIST" の場合、チャンクのデータ部分の最初の 4 バイトはフォーム型またはリスト型 (型 FOURCC) です

mmioDescend を使用してチャンクを検索する場合は、関数を呼び出す前に、ファイルの位置がチャンクの先頭にあることを確認してください。 検索は現在のファイル位置から開始され、ファイルの末尾まで続きます。 親チャンクが指定されている場合は、 mmioDescend を呼び出す前に、親チャンク内のどこかにファイルの位置を指定する必要があります。 この場合、検索は現在のファイル位置から開始され、親チャンクの末尾まで続きます。

mmioDescend がチャンクの検索に失敗した場合、現在のファイル位置は未定義です。 mmioDescend が成功すると、現在のファイル位置が変更されます。 チャンクが "RIFF" または "LIST" チャンクの場合、新しいファイルの位置は、フォームの種類またはリストの種類の直後 (チャンクの先頭から 12 バイト) になります。 その他のチャンクの場合、新しいファイル位置はチャンクのデータ部分の先頭になります (チャンクの先頭から 8 バイト)。

mmioDescend 関数は、lpck パラメーターが指す MMCKINFO 構造体に次の情報を入力します。

  • ckid メンバーはチャンクです。 wFlags に対してMMIO_FINDCHUNK、MMIO_FINDRIFF、またはMMIO_FINDLIST フラグが指定されている場合は、MMCKINFO 構造体を使用して、パラメーターを mmioDescend に渡すこともできます。 この場合、 ckid メンバーは、検索するチャンク識別子、フォーム型、またはリスト型の 4 文字のコードを指定します。
  • cksize メンバーは、チャンクのデータ部分のサイズ (バイト単位) です。 サイズにはフォームの種類またはリスト型 (存在する場合) が含まれますが、データの末尾にある 8 バイトのチャンク ヘッダーまたはパッド バイト (存在する場合) は含まれません。
  • fccType メンバーは、ckid が "RIFF" の場合はフォーム型、ckid が "LIST" の場合はリスト型です。 それ以外の場合は NULL です
  • dwDataOffset メンバーは、チャンクのデータ部分の先頭のファイル オフセットです。 チャンクが "RIFF" チャンクまたは "LIST" チャンクの場合、このメンバーはフォーム型またはリスト型のオフセットです。
  • dwFlags メンバーには、チャンクに関するその他の情報が含まれています。 現在、この情報は使用されず、0 に設定されています。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー mmiscapi.h (Mmiscapi.h、Windows.h を含む)
Library Winmm.lib
[DLL] Winmm.dll