#ifndef PNtPhysicalDrive_H

#define PNtPhysicalDrive_H


#include "ntdiskspec.h"


class IPhysicalDrive
    {
    public:
        virtual BOOL Open( int iDrive ) = 0;
		virtual void Close() = 0;
        virtual BOOL GetDriveGeometry( DISK_GEOMETRY* lpDG ) = 0;
        virtual BOOL GetDriveLayout( LPBYTE lpbMemory, DWORD dwSize ) = 0;
        virtual BOOL ReadAbsolute( LPBYTE lpbMemory, DWORD dwSize, INT64 Sector ) = 0;
		virtual void DumpDriveInfo( LPCSTR lpszDrive );

#ifdef SUPPORT_WINDOWS_XP_PARTITIONS

        // shit for Windows XP
        virtual BOOL GetDriveGeometryEx( DISK_GEOMETRY_EX* lpDG, DWORD dwSize ) = 0;
        virtual BOOL GetDriveLayoutEx( LPBYTE lpbMemory, DWORD dwSize ) = 0;
#endif

    };

IPhysicalDrive* CreatePhysicalDriveInstance();

#endif // PNtPhysicalDrive_H





syntax highlighted by Code2HTML, v. 0.9.1