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
MMIOERR_CHUNKNOTFOUND
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