Compartilhar via


Função mmioAdvance (mmiscapi.h)

A função mmioAdvance avança o buffer de E/S de um arquivo configurado para acesso direto ao buffer de E/S com a função mmioGetInfo .

Sintaxe

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

Parâmetros

hmmio

Identificador de arquivo de um arquivo aberto usando a função mmioOpen .

pmmioinfo

Ponteiro para a estrutura MMIOINFO obtida usando a função mmioGetInfo . Essa estrutura é usada para definir as informações de arquivo atuais e, em seguida, é atualizada depois que o buffer é avançado. Esse parâmetro é opcional.

fuAdvance

Sinalizadores para a operação. Pode ser um dos seguintes.

Valor Significado
MMIO_READ O buffer é preenchido do arquivo.
MMIO_WRITE O buffer é gravado no arquivo.

Valor retornado

Retorna MMSYSERR_NOERROR se tiver êxito ou um erro de outra forma. Os valores de erro possíveis incluem o seguinte.

Código de retorno Descrição
MMIOERR_CANNOTEXPAND
O arquivo de memória especificado não pode ser expandido, provavelmente porque o membro adwInfo da estrutura MMIOINFO foi definido como zero na chamada inicial para a função mmioOpen .
MMIOERR_CANNOTREAD
Ocorreu um erro ao recarregar o buffer.
MMIOERR_CANNOTWRITE
O conteúdo do buffer não pôde ser gravado no disco.
MMIOERR_OUTOFMEMORY
Não havia memória suficiente para expandir um arquivo de memória para gravação adicional.
MMIOERR_UNBUFFERED
O arquivo especificado não é aberto para E/S em buffer.

Comentários

Se o arquivo for aberto para leitura, o buffer de E/S será preenchido do disco. Se o arquivo for aberto para gravação e o sinalizador MMIO_DIRTY for definido no membro dwFlags da estrutura MMIOINFO , o buffer será gravado no disco. Os membros pchNext,pchEndRead e pchEndWrite da estrutura MMIOINFO são atualizados para refletir o novo estado do buffer de E/S.

Se o arquivo especificado for aberto para gravação ou para leitura e gravação, o buffer de E/S será liberado para o disco antes que o próximo buffer seja lido. Se o buffer de E/S não puder ser gravado no disco porque o disco está cheio, mmioAdvance retornará MMIOERR_CANNOTWRITE.

Se o arquivo especificado estiver aberto somente para gravação, o sinalizador MMIO_WRITE deverá ser especificado.

Se você tiver gravado no buffer de E/S, deverá definir o sinalizador MMIO_DIRTY no membro dwFlags da estrutura MMIOINFO antes de chamar mmioAdvance. Caso contrário, o buffer não será gravado no disco.

Se o final do arquivo for atingido, mmioAdvance ainda retornará com êxito, embora não seja possível ler mais dados. Para marcar para o final do arquivo, marcar se os membros pchNext e pchEndRead da estrutura MMIOINFO forem iguais depois de chamar mmioAdvance.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho mmiscapi.h (inclua Mmiscapi.h, Windows.h)
Biblioteca Winmm.lib
DLL Winmm.dll