mmioDescend-Funktion (mmiscapi.h)

Die mmioDescend-Funktion wird in einen Teil einer RIFF-Datei absteigen, die mithilfe der mmioOpen-Funktion geöffnet wurde. Sie kann auch nach einem bestimmten Teil suchen.

Syntax

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

Parameter

hmmio

Dateihandpunkt einer geöffneten RIFF-Datei.

pmmcki

Zeiger auf einen Puffer, der eine MMCKINFO-Struktur empfängt.

pmmckiParent

Zeiger auf eine optionale anwendungsdefinierte MMCKINFO-Struktur , die das übergeordnete Element des durchsuchten Blocks identifiziert. Wenn dieser Parameter nicht NULL ist, wird mmioDescend davon ausgegangen, dass die MMCKINFO-Struktur gefüllt wurde, wenn mmioDescend aufgerufen wurde, um in den übergeordneten Blöcken absteigen zu können, und mmioDescend sucht nach einem Teil innerhalb des übergeordneten Abschnitts. Legen Sie diesen Parameter auf NULL fest, wenn keine übergeordneten Blöcke angegeben werden.

fuDescend

Suchzeichen. Wenn keine Flags angegeben werden, wird mmioDescend absteigend am Anfang der aktuellen Dateiposition. Die folgenden Werte werden definiert.

Wert Bedeutung
MMIO_FINDCHUNK Sucht nach einem Teil mit dem angegebenen Chunk-Bezeichner.
MMIO_FINDLIST Sucht nach einem Block mit dem Chunk-Bezeichner "LIST" und mit dem angegebenen Formulartyp.
MMIO_FINDRIFF Sucht nach einem Block mit dem Chunk-Bezeichner "RIFF" und mit dem angegebenen Formulartyp.

Rückgabewert

Gibt MMSYSERR_NOERROR zurück, wenn erfolgreich oder ein Fehler andernfalls ausgeführt wird. Mögliche Fehlerwerte umfassen folgendes.

Rückgabecode Beschreibung
MMIOERR_CHUNKNOTFOUND
Das Ende der Datei (oder das Ende der übergeordneten Blöcke, sofern angegeben) wurde erreicht, bevor der gewünschte Blöcke gefunden wurde.

Hinweise

Ein "RIFF"-Teil besteht aus einem Vier-Byte-Chunk-Bezeichner (Typ FOURCC), gefolgt von einer Vier-Byte-Blöckegröße (Typ DWORD), gefolgt vom Datenteil des Chunks, gefolgt von einem Null-Pad-Byte-Byte, wenn die Größe des Datenteils ungerad ist. Wenn der Chunk-Bezeichner "RIFF" oder "LIST" ist, sind die ersten vier Bytes des Datenteils der Blöcke ein Formulartyp oder Listentyp (Typ FOURCC).

Wenn Sie mmioDescend verwenden, um nach einem Block zu suchen, stellen Sie sicher, dass die Dateiposition am Anfang eines Chunks liegt, bevor Sie die Funktion aufrufen. Die Suche beginnt an der aktuellen Dateiposition und setzt das Ende der Datei fort. Wenn ein übergeordnetes Element angegeben wird, sollte sich die Dateiposition innerhalb des übergeordneten Abschnitts befinden, bevor mmioDescend aufgerufen wird. In diesem Fall beginnt die Suche an der aktuellen Dateiposition und bleibt am Ende des übergeordneten Bereichs.

Wenn mmioDescend bei der Suche nach einem Teil nicht erfolgreich ist, wird die aktuelle Dateiposition nicht definiert. Wenn mmioDescend erfolgreich ist, wird die aktuelle Dateiposition geändert. Wenn der Block ein "RIFF" oder "LIST"-Block ist, wird die neue Dateiposition direkt nach dem Formulartyp oder Listentyp (12 Bytes ab Beginn des Blocks) liegen. Bei anderen Blöcken ist die neue Dateiposition der Anfang des Datenteils der Blöcke (8 Bytes ab Beginn des Blocks).

Die mmioDescend-Funktion füllt die MMCKINFO-Struktur aus, auf die der lpck-Parameter mit den folgenden Informationen verweist:

  • Das ckid-Element ist der Block. Wenn die MMIO_FINDCHUNK, MMIO_FINDRIFF oder MMIO_FINDLIST Flag für wFlags angegeben ist, wird die MMCKINFO-Struktur auch zum Übergeben von Parametern an mmioDescend verwendet. In diesem Fall gibt das ckid-Element den vierstelligen Code des Chunk-Bezeichners, des Formulartyps oder des Listentyps an, nach dem gesucht werden soll.
  • Das cksize-Element ist die Größe in Bytes des Datenteils der Cksize-Gruppe. Die Größe enthält den Formulartyp oder listentyp (falls vorhanden), enthält jedoch nicht die 8-Byte-Kopfzeile oder das Pad-Byte am Ende der Daten (falls vorhanden).
  • Das fccType-Element ist der Formulartyp, wenn ckid "RIFF" ist oder der Listentyp, wenn ckid "LIST" ist. Andernfalls ist ES NULL.
  • Das dwDataOffset-Element ist der Dateiversatz des Anfangs des Datenteils des Blocks. Wenn es sich bei dem Teil um einen "RIFF"-Abschnitt oder einen "LISTEN"-Abschnitt handelt, ist dieses Element der Versatz des Formulartyps oder Listentyps.
  • Das DwFlags-Element enthält weitere Informationen zu dem Block. Derzeit werden diese Informationen nicht verwendet und auf Null festgelegt.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mmiscapi.h (enthalten Mmiscapi.h, Windows.h)
Bibliothek Winmm.lib
DLL Winmm.dll