Condividi tramite


Ricerca di un subchunk

Nell'esempio seguente viene usata la funzione mmioDescend per cercare il blocco "FMT" nel blocco "RIFF" dell'esempio precedente.

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

Per cercare un blocco subchunk, ovvero qualsiasi blocco diverso da un blocco "RIFF" o "LIST", identificare il blocco padre nel parametro lpckParent della funzione mmioDescend .

Se non si specifica un blocco padre, la posizione del file corrente deve essere all'inizio di un blocco prima di chiamare la funzione mmioDescend . Se si specifica un blocco padre, la posizione del file corrente può essere ovunque in tale blocco.

Se la ricerca di un subchunk ha esito negativo, la posizione del file corrente non è definita. È possibile usare la funzione mmioSeek e il membro dwDataOffset della struttura MMCKINFO che descrive il blocco padre per cercare di tornare all'inizio del blocco padre, come nell'esempio seguente:

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

Poiché dwDataOffset specifica l'offset all'inizio della parte dati del blocco, è necessario cercare 4 byte passati dwDataOffset per impostare la posizione del file dopo il tipo di modulo.