funzione mmioDescend (mmiscapi.h)
La funzione mmioDescend scende in un blocco di un file RIFF aperto usando la funzione mmioOpen . Può anche cercare un determinato blocco.
Sintassi
MMRESULT mmioDescend(
HMMIO hmmio,
LPMMCKINFO pmmcki,
const MMCKINFO *pmmckiParent,
UINT fuDescend
);
Parametri
hmmio
Handle file di un file RIFF aperto.
pmmcki
Puntatore a un buffer che riceve una struttura MMCKINFO .
pmmckiParent
Puntatore a una struttura MMCKINFO definita dall'applicazione facoltativa che identifica l'elemento padre del blocco da cercare. Se questo parametro non è NULL, mmioDescend presuppone che la struttura MMCKINFO a cui fa riferimento sia stata riempita quando mmioDescend è stato chiamato per scendere nel blocco padre e mmioDescend cerca un blocco all'interno del blocco padre. Impostare questo parametro su NULL se non viene specificato alcun blocco padre.
fuDescend
Flag di ricerca. Se non vengono specificati flag, mmioDescend scende nel blocco a partire dalla posizione del file corrente. I valori seguenti sono definiti.
Valore | Significato |
---|---|
MMIO_FINDCHUNK | Cerca un blocco con l'identificatore di blocco specificato. |
MMIO_FINDLIST | Cerca un blocco con l'identificatore di blocco "LIST" e con il tipo di modulo specificato. |
MMIO_FINDRIFF | Cerca un blocco con l'identificatore "RIFF" e con il tipo di modulo specificato. |
Valore restituito
Restituisce MMSYSERR_NOERROR se ha esito positivo o un errore in caso contrario. I valori di errore possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
La fine del file (o la fine del blocco padre, se specificato) è stata raggiunta prima che sia stato trovato il blocco desiderato. |
Commenti
Un blocco "RIFF" è costituito da un identificatore di blocchi a quattro byte (tipo FOURCC), seguito da una dimensione di blocchi a quattro byte (tipo DWORD), seguita dalla parte dei dati del blocco, seguita da un byte pad Null se la dimensione della parte dati è strana. Se l'identificatore di blocco è "RIFF" o "LIST", i primi quattro byte della parte dati del blocco sono un tipo di modulo o un tipo di elenco (tipo FOURCC).
Se si usa mmioDescend per cercare un blocco, assicurarsi che la posizione del file sia all'inizio di un blocco prima di chiamare la funzione. La ricerca inizia alla posizione del file corrente e continua alla fine del file. Se viene specificato un blocco padre, la posizione del file deve trovarsi in un punto all'interno del blocco padre prima di chiamare mmioDescend. In questo caso, la ricerca inizia con la posizione del file corrente e continua alla fine del blocco padre.
Se mmioDescend non riesce a cercare un blocco, la posizione del file corrente non è definita. Se mmioDescend ha esito positivo, la posizione del file corrente viene modificata. Se il blocco è un blocco "RIFF" o "LIST", la nuova posizione del file sarà appena dopo il tipo di modulo o il tipo di elenco (12 byte dall'inizio del blocco). Per altri blocchi, la nuova posizione del file sarà l'inizio della parte dati del blocco (8 byte dall'inizio del blocco).
La funzione mmioDescend riempie la struttura MMCKINFO a cui punta il parametro lpck con le informazioni seguenti:
- Il membro ckid è il blocco. Se il MMIO_FINDCHUNK, MMIO_FINDRIFF o MMIO_FINDLIST flag viene specificato per wFlags, la struttura MMCKINFO viene usata anche per passare i parametri a mmioDescend. In questo caso, il membro ckid specifica il codice a quattro caratteri dell'identificatore del blocco, del tipo di modulo o del tipo di elenco da cercare.
- Il membro cksize è la dimensione, in byte, della parte dati del blocco. Le dimensioni includono il tipo di modulo o il tipo di elenco (se presente), ma non include l'intestazione a 8 byte o il byte del pad alla fine dei dati (se presente).
- Il membro fccType è il tipo di modulo se ckid è "RIFF" o il tipo di elenco se ckid è "LIST". In caso contrario, è NULL.
- Il membro dwDataOffset è l'offset di file dell'inizio della parte dati del blocco. Se il blocco è un blocco "RIFF" o un blocco "LIST", questo membro è l'offset del tipo di modulo o del tipo di elenco.
- Il membro dwFlags contiene altre informazioni sul blocco. Attualmente, queste informazioni non vengono usate e sono impostate su zero.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mmiscapi.h (includono Mmiscapi.h, Windows.h) |
Libreria | Winmm.lib |
DLL | Winmm.dll |