16,472
社区成员
发帖
与我相关
我的任务
分享
UINT32 CBaseFile::Read(UINT64 Offset, UINT32 dwReadSize, char *pBuffer)
{
//CBaseCriticalSectionLocker lock(&m_RWLock);
UINT32 dwStatus = 0;
UINT32 dwReadBytes = 0;
OVERLAPPED ol = {0};
LARGE_INTEGER FileOffset = {0};
FileOffset.QuadPart = Offset;
ol.hEvent = NULL;
ol.Offset = FileOffset.LowPart;
ol.OffsetHigh = FileOffset.HighPart;
if (!ReadFile(m_hFile, pBuffer, dwReadSize, (LPDWORD)&dwReadBytes, &ol))
{
dwStatus = GetLastError();
}
else
{
if( dwReadBytes != dwReadSize )
{
dwStatus = ERROR_END_OF_MEDIA ;
}
}
return dwStatus;
}
UINT32 CBaseFile::Write(UINT64 Offset, UINT32 dwWriteSize, const char *pBuffer)
{
//CBaseCriticalSectionLocker lock(&m_RWLock);
UINT32 dwStatus = 0;
LARGE_INTEGER FileOffset = {0};
UINT32 dwWriteBytes = 0;
OVERLAPPED ol = {0};
FileOffset.QuadPart = Offset;
ol.hEvent = NULL;
ol.Offset = FileOffset.LowPart;
ol.OffsetHigh = FileOffset.HighPart;
if (!WriteFile(m_hFile, pBuffer, dwWriteSize, (LPDWORD)&dwWriteBytes, &ol))
{
dwStatus = GetLastError();
}
else
{
if (dwWriteSize != dwWriteBytes)
{
dwStatus = ERROR_END_OF_MEDIA ;
}
}
return dwStatus;
}