File tree Expand file tree Collapse file tree 1 file changed +27
-1
lines changed
Expand file tree Collapse file tree 1 file changed +27
-1
lines changed Original file line number Diff line number Diff line change @@ -342,6 +342,32 @@ static DWORD FileGetFileSize(HANDLE Object, LPDWORD lpFileSizeHigh)
342342 return (UINT32 )(size & 0xFFFFFFFF );
343343}
344344
345+ static BOOL FileFlushFileBuffers (HANDLE hFile )
346+ {
347+ WINPR_FILE * pFile = (WINPR_FILE * )hFile ;
348+
349+ if (!pFile -> fp )
350+ {
351+ SetLastError (ERROR_INVALID_HANDLE );
352+ return FALSE;
353+ }
354+
355+ // See: https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-flushfilebuffers
356+ if ((pFile -> dwOpenMode & GENERIC_WRITE ) == 0 )
357+ {
358+ SetLastError (STATUS_ACCESS_DENIED );
359+ return FALSE;
360+ }
361+
362+ if (fflush (pFile -> fp ) != 0 )
363+ {
364+ SetLastError (map_posix_err (errno ));
365+ return FALSE;
366+ }
367+
368+ return TRUE;
369+ }
370+
345371static BOOL FileGetFileInformationByHandle (HANDLE hFile ,
346372 LPBY_HANDLE_FILE_INFORMATION lpFileInformation )
347373{
@@ -707,7 +733,7 @@ static HANDLE_OPS fileOps = {
707733 NULL , /* FileWriteEx */
708734 NULL , /* FileWriteGather */
709735 FileGetFileSize ,
710- NULL , /* FlushFileBuffers */
736+ FileFlushFileBuffers ,
711737 FileSetEndOfFile ,
712738 FileSetFilePointer ,
713739 FileSetFilePointerEx ,
You can’t perform that action at this time.
0 commit comments