#include "precomp.h"
#include "ReiserDiskAccess.h"
#include "reiserfs.h"
ReiserDiskAccess::ReiserDiskAccess(DWORD disk, LONGLONG startingOffset, LONGLONG length)
: m_PI(disk, startingOffset, length)
{
}
ReiserDiskAccess::~ReiserDiskAccess()
{
}
bool ReiserDiskAccess::IsReiserFS(DWORD disk, LONGLONG startingOffset, LONGLONG length)
{
bool success = false;
TRACE(("IsReiserFS(%d,%I64d,%I64d)\n", disk,startingOffset, length))
ReiserDiskAccess* rda = new ReiserDiskAccess(disk, startingOffset, length);
if( rda )
{
ReiserFsPartition partition(rda);
success = partition.CheckReiserFsPartition();
delete rda;
}
return success;
}
BOOL ReiserDiskAccess::Open(int)
{
return TRUE;
}
void ReiserDiskAccess::Close()
{
}
BOOL ReiserDiskAccess::GetDriveGeometry( DISK_GEOMETRY* lpDG )
{
ZeroMemory( lpDG, sizeof(DISK_GEOMETRY));
lpDG->BytesPerSector = m_PI.GetBytesPerSector();
return TRUE;
}
BOOL ReiserDiskAccess::GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize )
{
return FALSE;
}
BOOL ReiserDiskAccess::ReadAbsolute( LPBYTE lpbMemory, DWORD dwSize, INT64 OffsetInBytes )
{
DWORD dwBytesPerSector = m_PI.GetBytesPerSector();
DWORD dwSectors = dwSize / dwBytesPerSector;
OffsetInBytes /= dwBytesPerSector;
m_PI.ReadSectors(OffsetInBytes, lpbMemory, dwSectors);
return TRUE;
}
syntax highlighted by Code2HTML, v. 0.9.1