[ros-diffs] [ion] 24687: - Add hal.h from TinyKRNL containing internal definitions for fstub (MBR, Partiton Table, Partition Table Entry, Layout structures) and helper macros. Some structures come from disk.sys sample in the DDK.

ion at svn.reactos.org ion at svn.reactos.org
Sun Nov 5 21:44:38 CET 2006


Author: ion
Date: Sun Nov  5 23:44:38 2006
New Revision: 24687

URL: http://svn.reactos.org/svn/reactos?rev=24687&view=rev
Log:
- Add hal.h from TinyKRNL containing internal definitions for fstub (MBR, Partiton Table, Partition Table Entry, Layout structures) and helper macros. Some structures come from disk.sys sample in the DDK.

Added:
    trunk/reactos/ntoskrnl/include/internal/hal.h

Added: trunk/reactos/ntoskrnl/include/internal/hal.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/hal.h?rev=24687&view=auto
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/hal.h (added)
+++ trunk/reactos/ntoskrnl/include/internal/hal.h Sun Nov  5 23:44:38 2006
@@ -1,0 +1,108 @@
+/*
+ * PROJECT:         ReactOS Kernel
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * FILE:            ntoskrnl/include/hal.h
+ * PURPOSE:         Internal header for the I/O HAL Functions (Fstub)
+ * PROGRAMMERS:     Alex Ionescu (alex.ionescu at reactos.org)
+ */
+#ifndef _HAL_
+#define _HAL_
+
+//
+// Various offsets in the boot record
+//
+#define PARTITION_TABLE_OFFSET                      (0x1BE / 2)
+#define BOOT_SIGNATURE_OFFSET                       ((0x200 / 2) - 1)
+#define BOOT_RECORD_RESERVED                        0x1BC
+#define BOOT_RECORD_SIGNATURE                       0xAA55
+#define NUM_PARTITION_TABLE_ENTRIES                 4
+
+//
+// Helper Macros
+//
+#define GET_STARTING_SECTOR(p)                      \
+    ((ULONG)(p->StartingSectorLsb0) +               \
+     (ULONG)(p->StartingSectorLsb1 << 8 ) +         \
+     (ULONG)(p->StartingSectorMsb0 << 16) +         \
+     (ULONG)(p->StartingSectorMsb1 << 24))
+
+#define GET_ENDING_S_OF_CHS(p)                      \
+    ((UCHAR)(p->EndingCylinderLsb & 0x3F))
+
+#define GET_PARTITION_LENGTH(p)                     \
+    ((ULONG)(p->PartitionLengthLsb0) +              \
+     (ULONG)(p->PartitionLengthLsb1 << 8) +         \
+     (ULONG)(p->PartitionLengthMsb0 << 16) +        \
+     (ULONG)(p->PartitionLengthMsb1 << 24))
+
+//
+// Structure describing a partition
+//
+typedef struct _PARTITION_DESCRIPTOR
+{
+    UCHAR ActiveFlag;
+    UCHAR StartingTrack;
+    UCHAR StartingCylinderLsb;
+    UCHAR StartingCylinderMsb;
+    UCHAR PartitionType;
+    UCHAR EndingTrack;
+    UCHAR EndingCylinderLsb;
+    UCHAR EndingCylinderMsb;
+    UCHAR StartingSectorLsb0;
+    UCHAR StartingSectorLsb1;
+    UCHAR StartingSectorMsb0;
+    UCHAR StartingSectorMsb1;
+    UCHAR PartitionLengthLsb0;
+    UCHAR PartitionLengthLsb1;
+    UCHAR PartitionLengthMsb0;
+    UCHAR PartitionLengthMsb1;
+} PARTITION_DESCRIPTOR, *PPARTITION_DESCRIPTOR;
+
+//
+// Structure describing a boot sector
+//
+typedef struct _BOOT_SECTOR_INFO
+{
+    UCHAR JumpByte[1];
+    UCHAR Ignore1[2];
+    UCHAR OemData[8];
+    UCHAR BytesPerSector[2];
+    UCHAR Ignore2[6];
+    UCHAR NumberOfSectors[2];
+    UCHAR MediaByte[1];
+    UCHAR Ignore3[2];
+    UCHAR SectorsPerTrack[2];
+    UCHAR NumberOfHeads[2];
+} BOOT_SECTOR_INFO, *PBOOT_SECTOR_INFO;
+
+//
+// Partition Table and Disk Layout
+//
+typedef struct _PARTITION_TABLE
+{
+    PARTITION_INFORMATION PartitionEntry[4];
+} PARTITION_TABLE, *PPARTITION_TABLE;
+
+typedef struct _DISK_LAYOUT
+{
+    ULONG TableCount;
+    ULONG Signature;
+    PARTITION_TABLE PartitionTable[1];
+} DISK_LAYOUT, *PDISK_LAYOUT;
+
+//
+// Partition Table Entry
+//
+typedef struct _PTE
+{
+    UCHAR ActiveFlag;
+    UCHAR StartingTrack;
+    USHORT StartingCylinder;
+    UCHAR PartitionType;
+    UCHAR EndingTrack;
+    USHORT EndingCylinder;
+    ULONG StartingSector;
+    ULONG PartitionLength;
+} PTE, *PPTE;
+
+#endif




More information about the Ros-diffs mailing list