Condividi tramite


Ricerca di un sottoblocco

[La funzionalità associata a questa pagina, I/O dei file multimediali , è una funzionalità legacy. È stato sostituito da Source Reader. lettore di origine è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi Source Reader invece di I/O file multimediali, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Nell'esempio seguente viene usata la funzionemmioDescend 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 sotto-blocco, ovvero qualsiasi blocco diverso da un blocco "RIFF" o "LIST", identificare il chunk padre nel parametro lpckParent della funzione mmioDescend.

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

Se la ricerca di una suddivisione in blocchi ha esito negativo, la posizione del file corrente non è definita. È possibile utilizzare la funzione mmioSeek e il membro dwDataOffset della struttura MMCKINFO che descrive il blocco padre per 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 di dati del blocco, è necessario cercare 4 byte oltre dwDataOffset per impostare la posizione del file dopo il tipo di modulo.