Partager via


fonction mmioDescend (mmiscapi.h)

La fonction mmioDescend descend dans un segment d’un fichier RIFF qui a été ouvert à l’aide de la fonction mmioOpen . Il peut également rechercher un segment donné.

Syntaxe

MMRESULT mmioDescend(
  HMMIO          hmmio,
  LPMMCKINFO     pmmcki,
  const MMCKINFO *pmmckiParent,
  UINT           fuDescend
);

Paramètres

hmmio

Handle de fichier d’un fichier RIFF ouvert.

pmmcki

Pointeur vers une mémoire tampon qui reçoit une structure MMCKINFO .

pmmckiParent

Pointeur vers une structure MMCKINFO définie par l’application facultative identifiant le parent du segment recherché. Si ce paramètre n’est pas NULL, mmioDescend suppose que la structure MMCKINFO à laquelle elle fait référence a été remplie lorsque mmioDescend a été appelé pour descendre dans le segment parent et que mmioDescend recherche un segment dans le segment parent. Définissez ce paramètre sur NULL si aucun segment parent n’est spécifié.

fuDescend

Indicateurs de recherche. Si aucun indicateur n’est spécifié, mmioDescend descend dans le segment commençant à la position actuelle du fichier. Les valeurs suivantes sont définies.

Valeur Signification
MMIO_FINDCHUNK Recherche un segment avec l’identificateur de segment spécifié.
MMIO_FINDLIST Recherche un segment avec l’identificateur de segment « LIST » et le type de formulaire spécifié.
MMIO_FINDRIFF Recherche un segment avec l’identificateur de segment « RIFF » et le type de formulaire spécifié.

Valeur retournée

Retourne MMSYSERR_NOERROR en cas de réussite ou une erreur dans le cas contraire. Les valeurs d’erreur possibles sont les suivantes.

Code de retour Description
MMIOERR_CHUNKNOTFOUND
La fin du fichier (ou la fin du segment parent, le cas échéant) a été atteinte avant que le segment souhaité ait été trouvé.

Notes

Un segment « RIFF » se compose d’un identificateur de segment de quatre octets (type FOURCC), suivi d’une taille de segment de quatre octets (type DWORD), suivi de la partie de données du segment, suivi d’un octet de bloc null si la taille de la partie de données est impaire. Si l’identificateur de segment est « RIFF » ou « LIST », les quatre premiers octets de la partie de données du segment sont un type de formulaire ou de liste (type FOURCC).

Si vous utilisez mmioDescend pour rechercher un segment, vérifiez que la position du fichier se trouve au début d’un segment avant d’appeler la fonction. La recherche commence à la position actuelle du fichier et se poursuit jusqu’à la fin du fichier. Si un segment parent est spécifié, la position du fichier doit se trouver quelque part dans le segment parent avant d’appeler mmioDescend. Dans ce cas, la recherche commence à l’emplacement actuel du fichier et se poursuit jusqu’à la fin du segment parent.

Si mmioDescend échoue dans la recherche d’un segment, la position de fichier actuelle n’est pas définie. Si mmioDescend réussit, la position actuelle du fichier est modifiée. Si le segment est un segment « RIFF » ou « LIST », la nouvelle position du fichier se trouve juste après le type de formulaire ou le type de liste (12 octets à partir du début du segment). Pour les autres segments, la nouvelle position du fichier correspond au début de la partie de données du segment (8 octets à partir du début du segment).

La fonction mmioDescend remplit la structure MMCKINFO pointée par le paramètre lpck avec les informations suivantes :

  • Le membre ckid est le segment. Si l’indicateur MMIO_FINDCHUNK, MMIO_FINDRIFF ou MMIO_FINDLIST est spécifié pour wFlags, la structure MMCKINFO est également utilisée pour passer des paramètres à mmioDescend. Dans ce cas, le membre ckid spécifie le code de quatre caractères de l’identificateur de bloc, du type de formulaire ou du type de liste à rechercher.
  • Le membre cksize est la taille, en octets, de la partie de données du segment. La taille inclut le type de formulaire ou le type de liste (le cas échéant), mais n’inclut pas l’en-tête de segment de 8 octets ou l’octet du pavé à la fin des données (le cas échéant).
  • Le membre fccType est le type de formulaire si ckid est « RIFF », ou le type de liste si ckid est « LIST ». Sinon, elle est NULL.
  • Le membre dwDataOffset est le décalage de fichier du début de la partie de données du segment. Si le segment est un segment « RIFF » ou un segment « LIST », ce membre est le décalage du type de formulaire ou du type de liste.
  • Le membre dwFlags contient d’autres informations sur le segment. Actuellement, ces informations ne sont pas utilisées et sont définies sur zéro.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête mmiscapi.h (inclure Mmiscapi.h, Windows.h)
Bibliothèque Winmm.lib
DLL Winmm.dll