다음을 통해 공유


mmioAdvance 함수(mmiscapi.h)

mmioAdvance 함수는 mmioGetInfo 함수를 사용하여 직접 I/O 버퍼 액세스를 위해 설정된 파일의 I/O 버퍼를 진행합니다.

구문

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

매개 변수

hmmio

mmioOpen 함수를 사용하여 연 파일의 파일 핸들입니다.

pmmioinfo

mmioGetInfo 함수를 사용하여 가져온 MMIOINFO 구조체에 대한 포인터입니다. 이 구조체는 현재 파일 정보를 설정하는 데 사용되며 버퍼가 고급화된 후 업데이트됩니다. 이 매개 변수는 선택 사항입니다.

fuAdvance

작업에 대한 플래그입니다. 다음 중 하나일 수 있습니다.

의미
MMIO_READ 버퍼가 파일에서 채워집니다.
MMIO_WRITE 버퍼는 파일에 기록됩니다.

반환 값

성공하거나 오류가 있으면 MMSYSERR_NOERROR 반환합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
MMIOERR_CANNOTEXPAND
MMIOINFO 구조체의 adwInfo 멤버가 mmioOpen 함수에 대한 초기 호출에서 0으로 설정되었기 때문에 지정된 메모리 파일을 확장할 수 없습니다.
MMIOERR_CANNOTREAD
버퍼를 다시 채울 때 오류가 발생했습니다.
MMIOERR_CANNOTWRITE
버퍼의 내용을 디스크에 쓸 수 없습니다.
MMIOERR_OUTOFMEMORY
추가 쓰기를 위해 메모리 파일을 확장할 메모리가 부족했습니다.
MMIOERR_UNBUFFERED
버퍼링된 I/O에 대해 지정된 파일이 열리지 않습니다.

설명

파일을 읽기 위해 열면 I/O 버퍼가 디스크에서 채워집니다. 파일을 쓰기 위해 열고 MMIOINFO 구조체의 dwFlags 멤버에서 MMIO_DIRTY 플래그를 설정하면 버퍼가 디스크에 기록됩니다. MMIOINFO 구조체의 pchNext,pchEndReadpchEndWrite 멤버는 I/O 버퍼의 새 상태를 반영하도록 업데이트됩니다.

지정된 파일을 쓰기 위해 열거나 읽기 및 쓰기용으로 열면 다음 버퍼를 읽기 전에 I/O 버퍼가 디스크로 플러시됩니다. 디스크가 가득 차 I/O 버퍼를 디스크에 쓸 수 없는 경우 mmioAdvance 는 MMIOERR_CANNOTWRITE 반환합니다.

지정한 파일이 쓰기용으로만 열려 있는 경우 MMIO_WRITE 플래그를 지정해야 합니다.

I/O 버퍼에 쓴 경우 mmioAdvance를 호출하기 전에 MMIOINFO 구조체의 dwFlags 멤버에서 MMIO_DIRTY 플래그를 설정해야 합니다. 그렇지 않으면 버퍼가 디스크에 기록되지 않습니다.

파일 끝에 도달하면 더 이상 데이터를 읽을 수 없더라도 mmioAdvance 는 여전히 성공적으로 반환됩니다. 파일의 끝에 검사 위해 mmioAdvance를 호출한 후 MMIOINFO 구조체의 pchNextpchEndRead 멤버가 같은지 검사.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 mmiscapi.h(Mmiscapi.h, Windows.h 포함)
라이브러리 Winmm.lib
DLL Winmm.dll