Funzione mmioAdvance (mmiscapi.h)

La funzione mmioAdvance fa avanzare il buffer di I/O di un file configurato per l'accesso diretto al buffer I/O con la funzione mmioGetInfo .

Sintassi

MMRESULT mmioAdvance(
  HMMIO      hmmio,
  LPMMIOINFO pmmioinfo,
  UINT       fuAdvance
);

Parametri

hmmio

Handle di file di un file aperto tramite la funzione mmioOpen .

pmmioinfo

Puntatore alla struttura MMIOINFO ottenuta usando la funzione mmioGetInfo . Questa struttura viene usata per impostare le informazioni sul file corrente e quindi viene aggiornata dopo che il buffer è avanzato. Questo parametro è facoltativo e,

fuAdvance

Flag per l'operazione. Può essere una delle seguenti.

Valore Significato
MMIO_READ Il buffer viene riempito dal file.
MMIO_WRITE Il buffer viene scritto nel file.

Valore restituito

Restituisce MMSYSERR_NOERROR se l'esito positivo o un errore in caso contrario. I valori di errore possibili includono quanto segue.

Codice restituito Descrizione
MMIOERR_CANNOTEXPAND
Impossibile espandere il file di memoria specificato, probabilmente perché il membro adwInfo della struttura MMIOINFO è stato impostato su zero nella chiamata iniziale alla funzione mmioOpen .
MMIOERR_CANNOTREAD
Errore durante il riempimento del buffer.
MMIOERR_CANNOTWRITE
Impossibile scrivere il contenuto del buffer su disco.
MMIOERR_OUTOFMEMORY
Memoria insufficiente per espandere un file di memoria per ulteriori operazioni di scrittura.
MMIOERR_UNBUFFERED
Il file specificato non viene aperto per le operazioni di I/O memorizzate nel buffer.

Commenti

Se il file viene aperto per la lettura, il buffer di I/O viene riempito dal disco. Se il file viene aperto per la scrittura e il flag MMIO_DIRTY viene impostato nel membro dwFlags della struttura MMIOINFO , il buffer viene scritto su disco. I membri pchNext,pchEndRead e pchEndWrite della struttura MMIOINFO vengono aggiornati per riflettere il nuovo stato del buffer di I/O.

Se il file specificato viene aperto per la scrittura o per la lettura e la scrittura, il buffer di I/O viene scaricato su disco prima della lettura del buffer successivo. Se il buffer di I/O non può essere scritto su disco perché il disco è pieno, mmioAdvance restituisce MMIOERR_CANNOTWRITE.

Se il file specificato è aperto solo per la scrittura, è necessario specificare il flag di MMIO_WRITE.

Se è stato scritto nel buffer di I/O, è necessario impostare il flag MMIO_DIRTY nel membro dwFlags della struttura MMIOINFO prima di chiamare mmioAdvance. In caso contrario, il buffer non verrà scritto su disco.

Se viene raggiunta la fine del file, mmioAdvance restituisce comunque correttamente anche se non è possibile leggere altri dati. Per verificare la fine del file, verificare se i membri pchNext e pchEndRead della struttura MMIOINFO sono uguali dopo aver chiamato mmioAdvance.

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 (include Mmiscapi.h, Windows.h)
Libreria Winmm.lib
DLL Winmm.dll