primpart.h
上传用户:yingdiyu
上传日期:2007-01-06
资源大小:116k
文件大小:2k
源码类别:

磁盘编程

开发平台:

Others

  1. /*
  2. FIPS - the First nondestructive Interactive Partition Splitting program
  3. Module hdstruct.h
  4. RCS - Header:
  5. $Id$
  6. Copyright (C) 1993 Arno Schaefer
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. Report problems and direct all questions to:
  19. schaefer@rbg.informatik.th-darmstadt.de
  20. */
  21. /* ----------------------------------------------------------------------- */
  22. /* Partition Class, derived from logical_drive and raw_partition           */
  23. /* Represents one primary DOS partition. Read_sector() and write_sector()  */
  24. /* are instances of the virtual functions in the logical_drive class       */
  25. /* ----------------------------------------------------------------------- */
  26. #ifndef PRIMPART_H
  27. #define PRIMPART_H
  28. #include "types.h"
  29. #include "disk_io.h"
  30. #include "logdr_st.h"
  31. #include "hdstruct.h"
  32. class partition:public logical_drive
  33. {
  34. public:
  35. int number;
  36. physical_drive *drive;
  37. partition_info *partition_info;
  38. int read_sector (dword number, sector *sector)
  39. {
  40. return (drive->read_sector
  41. (
  42. sector,
  43. partition_info->start_sector_abs
  44. + number
  45. ));
  46. }
  47. int write_sector (dword number, sector *sector)
  48. {
  49. return (drive->write_sector
  50. (
  51. sector,
  52. partition_info->start_sector_abs
  53. + number
  54. ));
  55. }
  56. partition (class harddrive *drive, int number)
  57. {
  58. partition::number = number;
  59. partition::drive = drive;
  60. partition_info =
  61. &(drive->partition_table().partition_info[number]);
  62. boot_sector = new class boot_sector (this);
  63. }
  64. ~partition (void) { delete boot_sector; }
  65. };
  66. #endif