Поиск подфрагмента

В следующем примере функция ммиодесценд используется для поиска фрагмента "fmt" в фрагменте "Metallica" предыдущего примера.

// 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. 

Для поиска подфрагмента (т. е. любого фрагмента, отличного от «Metallica» или «LIST»), необходимо задать его родительский фрагмент в параметре лпккпарент функции ммиодесценд .

Если не указать родительский фрагмент, текущее расположение файла должно находиться в начале фрагмента перед вызовом функции ммиодесценд . Если указать родительский фрагмент, текущее расположение файла может находиться в любом месте этого фрагмента.

Если поиск подфрагмента завершается неудачей, текущее расположение файла не определено. Вы можете использовать функцию ммиосик и элемент двдатаоффсет структуры ммккинфо , описывающие родительский блок, чтобы вернуться к началу родительского фрагмента, как показано в следующем примере:

mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4, SEEK_SET); 

Поскольку двдатаоффсет указывает смещение в начале части данных фрагмента, необходимо найти 4 байта после двдатаоффсет , чтобы задать положение файла после типа формы.