FlushFileBuffers 함수(fileapi.h)
지정된 파일의 버퍼를 플러시하고 버퍼링된 모든 데이터를 파일에 쓰게 합니다.
통사론
BOOL FlushFileBuffers(
[in] HANDLE hFile
);
매개 변수
[in] hFile
열린 파일에 대한 핸들입니다.
파일 핸들에는 GENERIC_WRITE 액세스 권한이 있어야 합니다. 자세한 내용은 파일 보안 및 액세스 권한참조하세요.
hFile 통신 디바이스에 대한 핸들인 경우 함수는 전송 버퍼만 플러시합니다.
hFile 명명된 파이프의 서버 끝에 대한 핸들인 경우 클라이언트가 파이프에서 버퍼링된 모든 데이터를 읽을 때까지 함수가 반환되지 않습니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다.
hFile 콘솔 출력에 대한 핸들인 경우 함수가 실패합니다. 콘솔 출력이 버퍼링되지 않기 때문입니다. 함수는 FALSE반환하고 GetLastErrorERROR_INVALID_HANDLE반환합니다.
발언
일반적으로 WriteFile 및 WriteFileEx 함수는 운영 체제가 정기적으로 디스크 또는 통신 파이프에 쓰는 내부 버퍼에 데이터를 씁니다. FlushFileBuffers 함수는 지정된 파일에 대한 모든 버퍼링된 정보를 디바이스 또는 파이프에 씁니다.
시스템 내의 디스크 캐싱 상호 작용으로 인해 FlushFileBuffers 함수는 여러 쓰기가 별도로 수행될 때 디스크 드라이브 디바이스에 쓸 때마다 사용할 때 비효율적일 수 있습니다. 애플리케이션이 디스크에 여러 쓰기를 수행하고 있고 중요한 데이터가 영구 미디어에 기록되도록 해야 하는 경우 애플리케이션은 FlushFileBuffers자주 호출하는 대신 버퍼링되지 않은 I/O를 사용해야 합니다. 버퍼되지 않은 I/O용 파일을 열려면 FILE_FLAG_NO_BUFFERING 플래그와 FILE_FLAG_WRITE_THROUGH 플래그를 사용하여 CreateFile 함수를 호출합니다. 이렇게 하면 파일 내용이 캐시되지 않고 쓰기가 가능한 디스크에 메타데이터가 플러시됩니다. 자세한 내용은 CreateFile
볼륨의 열려 있는 모든 파일을 플러시하려면 볼륨에 대한 핸들을 사용하여 FlushFileBuffers 호출합니다. 호출자에게는 관리 권한이 있어야 합니다. 자세한 내용은 특수 권한
CreateFile사용하여 볼륨을 열 때 lpFileName 문자열은 \\.\x형식이어야 합니다. 또는 \\?\Volume{GUID}. 드라이브의 루트 디렉터리를 나타내므로 볼륨 이름에 후행 백슬래시를 사용하지 마세요.
Windows 8 및 Windows Server 2012에서 이 함수는 다음 기술에서 지원됩니다.
기술 | 지원 |
---|---|
SMB(서버 메시지 블록) 3.0 프로토콜 | 예 |
SMB 3.0 TFO(투명한 장애 조치(failover) | 예 |
SO(스케일 아웃 파일 공유)가 있는 SMB 3.0 | 예 |
CsvFS(클러스터 공유 볼륨 파일 시스템) | 예 |
ReFS(복원 파일 시스템) | 예 |
예제
예를 들어 다중 스레드 파이프 서버
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | fileapi.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
CreateFile
WriteFile
WriteFileEx