mmioDescend-Funktion (mmiscapi.h)

Die mmioDescend-Funktion geht in einen Block einer RIFF-Datei ab, die mit der mmioOpen-Funktion geöffnet wurde. Es kann auch nach einem bestimmten Block suchen.

Syntax

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

Parameter

hmmio

Dateihandle 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 gesuchten Blocks identifiziert. Wenn dieser Parameter nicht NULL ist, geht mmioDescend davon aus, dass die MMCKINFO-Struktur , auf die er sich bezieht, gefüllt wurde, wenn mmioDescend aufgerufen wurde, um in den übergeordneten Block abzusteigen, und mmioDescend sucht nach einem Block im übergeordneten Block. Legen Sie diesen Parameter auf NULL fest, wenn kein übergeordneter Block angegeben wird.

fuDescend

Suchflags. Wenn keine Flags angegeben sind, steigt mmioDescend ab der aktuellen Dateiposition in den Block ab. Die folgenden Werte werden definiert.

Wert Bedeutung
MMIO_FINDCHUNK Sucht nach einem Block mit dem angegebenen Blockbezeichner.
MMIO_FINDLIST Sucht nach einem Block mit dem Blockbezeichner "LIST" und dem angegebenen Formulartyp.
MMIO_FINDRIFF Sucht nach einem Block mit dem Blockbezeichner "RIFF" und dem angegebenen Formulartyp.

Rückgabewert

Gibt MMSYSERR_NOERROR zurück, wenn erfolgreich oder andernfalls ein Fehler aufgetreten ist. Mögliche Fehlerwerte sind:

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

Hinweise

Ein RIFF-Block besteht aus einem Vier-Byte-Blockbezeichner (Typ FOURCC), gefolgt von einer Vier-Byte-Blockgröße (Typ DWORD), gefolgt vom Datenteil des Blocks, gefolgt von einem NULL-Pad-Byte, wenn die Größe des Datenteils ungerade ist. Wenn der Blockbezeichner "RIFF" oder "LIST" lautet, sind die ersten vier Bytes des Datenteils des Blocks ein Formulartyp oder Listentyp (Typ FOURCC).

Wenn Sie mmioDescend verwenden, um nach einem Block zu suchen, stellen Sie sicher, dass sich die Dateiposition am Anfang eines Blocks befindet, bevor Sie die Funktion aufrufen. Die Suche beginnt an der aktuellen Dateiposition und wird bis zum Ende der Datei fortgesetzt. Wenn ein übergeordneter Block angegeben wird, sollte sich die Dateiposition innerhalb des übergeordneten Blocks befinden, bevor mmioDescend aufgerufen wird. In diesem Fall beginnt die Suche an der aktuellen Dateiposition und wird am Ende des übergeordneten Blöckes fortgesetzt.

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

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

  • Das ckid-Element ist der Block. Wenn das flag MMIO_FINDCHUNK, MMIO_FINDRIFF oder MMIO_FINDLIST für wFlags angegeben ist, wird die MMCKINFO-Struktur auch verwendet, um Parameter an mmioDescend zu übergeben. In diesem Fall gibt der ckid-Member den vierstelligen Code des zu suchden Blockbezeichners, Formulartyps oder Listentyps an.
  • Der cksize-Member ist die Größe des Datenteils des Blocks in Byte. Die Größe umfasst den Formulartyp oder Listentyp (falls vorhanden), aber nicht den 8-Byte-Blockheader oder das Padbyte am Ende der Daten (falls vorhanden).
  • Der fccType-Member ist der Formulartyp, wenn ckid "RIFF" ist, oder der Listentyp, wenn ckid "LIST" ist. Andernfalls ist er NULL.
  • Das dwDataOffset-Element ist der Dateioffset des Anfangs des Datenteils des Blocks. Wenn der Block ein "RIFF"-Block oder ein "LIST"-Block ist, ist dieser Member der Offset des Formulartyps oder Listentyps.
  • Der dwFlags-Member enthält weitere Informationen zum Block. Derzeit werden diese Informationen nicht verwendet und auf 0 (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 (include Mmiscapi.h, Windows.h)
Bibliothek Winmm.lib
DLL Winmm.dll