サブチャンクの検索
次の例では、mmioDescend 関数を使用して、前の例の "RIFF" チャンク内の "FMT" チャンクを検索します。
// Find the format chunk (form type "FMT"); it should be
// a subchunk of the "RIFF" parent chunk.
mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', ' ');
if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent,
MMIO_FINDCHUNK))
// Error, cannot find the "FMT" chunk.
else
// "FMT" chunk found.
サブチャンク (つまり、"RIFF" または "LIST" チャンク以外のチャンク) を検索するには、mmioDescend 関数の lpckParent パラメーターでその親チャンクを特定します。
親チャンクを指定しない場合は、 mmioDescend 関数を呼び出す前に、チャンクの先頭に現在のファイル位置を指定する必要があります。 親チャンクを指定した場合、現在のファイル位置はそのチャンク内の任意の場所に配置できます。
サブチャンクの検索が失敗した場合、現在のファイル位置は未定義です。 mmioSeek 関数と MMCKINFO 構造体の dwDataOffset メンバーを使用して、親チャンクを記述し、次の例のように親チャンクの先頭にシークバックできます。
mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4, SEEK_SET);
dwDataOffset はチャンクのデータ部分の先頭へのオフセットを指定するため、dwDataOffset の後に 4 バイトをシークして、フォームの種類の後のファイル位置を設定する必要があります。