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 반환합니다. 가능한 오류 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
MMIOINFO 구조체의 adwInfo 멤버가 mmioOpen 함수에 대한 초기 호출에서 0으로 설정되었기 때문에 지정된 메모리 파일을 확장할 수 없습니다. |
|
버퍼를 다시 채울 때 오류가 발생했습니다. |
|
버퍼의 내용을 디스크에 쓸 수 없습니다. |
|
추가 쓰기를 위해 메모리 파일을 확장할 메모리가 부족했습니다. |
|
버퍼링된 I/O에 대해 지정된 파일이 열리지 않습니다. |
설명
파일을 읽기 위해 열면 I/O 버퍼가 디스크에서 채워집니다. 파일을 쓰기 위해 열고 MMIOINFO 구조체의 dwFlags 멤버에서 MMIO_DIRTY 플래그를 설정하면 버퍼가 디스크에 기록됩니다. MMIOINFO 구조체의 pchNext,pchEndRead 및 pchEndWrite 멤버는 I/O 버퍼의 새 상태를 반영하도록 업데이트됩니다.
지정된 파일을 쓰기 위해 열거나 읽기 및 쓰기용으로 열면 다음 버퍼를 읽기 전에 I/O 버퍼가 디스크로 플러시됩니다. 디스크가 가득 차 I/O 버퍼를 디스크에 쓸 수 없는 경우 mmioAdvance 는 MMIOERR_CANNOTWRITE 반환합니다.
지정한 파일이 쓰기용으로만 열려 있는 경우 MMIO_WRITE 플래그를 지정해야 합니다.
I/O 버퍼에 쓴 경우 mmioAdvance를 호출하기 전에 MMIOINFO 구조체의 dwFlags 멤버에서 MMIO_DIRTY 플래그를 설정해야 합니다. 그렇지 않으면 버퍼가 디스크에 기록되지 않습니다.
파일 끝에 도달하면 더 이상 데이터를 읽을 수 없더라도 mmioAdvance 는 여전히 성공적으로 반환됩니다. 파일의 끝에 검사 위해 mmioAdvance를 호출한 후 MMIOINFO 구조체의 pchNext 및 pchEndRead 멤버가 같은지 검사.
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | mmiscapi.h(Mmiscapi.h, Windows.h 포함) |
라이브러리 | Winmm.lib |
DLL | Winmm.dll |