@@ -355,11 +355,13 @@ BOOL Win32SequentialFile::_Init()
355
355
ToWidePath (_filename, path);
356
356
_hFile = CreateFileW (path.c_str (),
357
357
GENERIC_READ,
358
- FILE_SHARE_READ,
358
+ FILE_SHARE_READ | FILE_SHARE_WRITE ,
359
359
NULL ,
360
360
OPEN_EXISTING,
361
- FILE_ATTRIBUTE_NORMAL,
361
+ FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN ,
362
362
NULL );
363
+ if (_hFile == INVALID_HANDLE_VALUE)
364
+ _hFile = NULL ;
363
365
return _hFile ? TRUE : FALSE ;
364
366
}
365
367
@@ -403,7 +405,7 @@ BOOL Win32RandomAccessFile::_Init( LPCWSTR path )
403
405
{
404
406
BOOL bRet = FALSE ;
405
407
if (!_hFile)
406
- _hFile = ::CreateFileW (path,GENERIC_READ,FILE_SHARE_READ,NULL ,OPEN_EXISTING,
408
+ _hFile = ::CreateFileW (path,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE ,NULL ,OPEN_EXISTING,
407
409
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,NULL );
408
410
if (!_hFile || _hFile == INVALID_HANDLE_VALUE )
409
411
_hFile = NULL ;
@@ -669,7 +671,7 @@ Status Win32Env::GetFileSize( const std::string& fname, uint64_t* file_size )
669
671
ToWidePath (ModifyPath (path), wpath);
670
672
671
673
HANDLE file = ::CreateFileW (wpath.c_str (),
672
- GENERIC_READ,FILE_SHARE_READ,NULL ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
674
+ GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE ,NULL ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
673
675
LARGE_INTEGER li;
674
676
if (::GetFileSizeEx (file,&li)){
675
677
*file_size = (uint64_t )li.QuadPart ;
0 commit comments