-/* $Id: disk.h,v 1.10 2002/09/07 15:12:20 chorns Exp $
+/* $Id: disk.h,v 1.11 2002/09/08 10:22:32 chorns Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
#ifndef __INCLUDE_DISK_H
#define __INCLUDE_DISK_H
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#include <ddk/ntdddisk.h>
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(FILE_DEVICE_DISK, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(FILE_DEVICE_DISK, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(FILE_DEVICE_DISK, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(FILE_DEVICE_DISK, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(FILE_DEVICE_DISK, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY CTL_CODE(FILE_DEVICE_DISK, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(FILE_DEVICE_DISK, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(FILE_DEVICE_DISK, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE CTL_CODE(FILE_DEVICE_DISK, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE CTL_CODE(FILE_DEVICE_DISK, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_LOGGING CTL_CODE(FILE_DEVICE_DISK, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(FILE_DEVICE_DISK, 11, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(FILE_DEVICE_DISK, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(FILE_DEVICE_DISK, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(FILE_DEVICE_DISK, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define PARTITION_NTFT 0x80
#define VALID_NTFT 0xC0
-typedef struct _DRIVE_LAYOUT_INFORMATION {
- DWORD PartitionCount;
- DWORD Signature;
- PARTITION_INFORMATION PartitionEntry[1];
+#if 0
+#define PTEmpty 0x00
+#define PTDOS3xPrimary 0x01
+#define PTXENIXRoot 0x02
+#define PTXENIXUsr 0x03
+#define PTOLDDOS16Bit 0x04
+#define PTDosExtended 0x05
+#define PTDos5xPrimary 0x06
+#define PTIfs 0x07 // e.g.: HPFS, NTFS, etc
+#define PTAIX 0x08
+#define PTAIXBootable 0x09
+#define PTOS2BootMgr 0x0A
+#define PTWin95FAT32 0x0B
+#define PTWin95FAT32LBA 0x0C
+#define PTWin95FAT16LBA 0x0E
+#define PTWin95ExtendedLBA 0x0F
+#define PTVenix286 0x40
+#define PTNovell 0x51
+#define PTMicroport 0x52
+#define PTGnuHurd 0x63
+#define PTNetware286 0x64
+#define PTNetware386 0x65
+#define PTPCIX 0x75
+#define PTOldMinix 0x80
+#define PTMinix 0x81
+#define PTLinuxSwap 0x82
+#define PTLinuxExt2 0x83
+#define PTAmoeba 0x93
+#define PTAmoebaBBT 0x94
+#define PTBSD 0xA5
+#define PTBSDIFS 0xB7
+#define PTBSDISwap 0xB8
+#define PTSyrinx 0xC7
+#define PTCPM 0xDB
+#define PTDOSAccess 0xE1
+#define PTDOSRO 0xE3
+#define PTDOSSecondary 0xF2
+#define PTBBT 0xFF
+#endif
+
+#define IsRecognizedPartition(P) \
+ ((P) == PARTITION_FAT_12 || \
+ (P) == PARTITION_FAT_16 || \
+ (P) == PARTITION_HUGE || \
+ (P) == PARTITION_IFS || \
+ (P) == PARTITION_FAT32 || \
+ (P) == PARTITION_FAT32_XINT13 || \
+ (P) == PARTITION_XINT13)
+
+#define IsContainerPartition(P) \
+ ((P) == PARTITION_EXTENDED || \
+ (P) == PARTITION_XINT13_EXTENDED)
+
+
+typedef enum _MEDIA_TYPE
+{
+ Unknown,
+ F5_1Pt2_512,
+ F3_1Pt44_512,
+ F3_2Pt88_512,
+ F3_20Pt8_512,
+ F3_720_512,
+ F5_360_512,
+ F5_320_512,
+ F5_320_1024,
+ F5_180_512,
+ F5_160_512,
+ RemovableMedia,
+ FixedMedia
+} MEDIA_TYPE;
+
+typedef struct _PARTITION_INFORMATION
+{
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ DWORD HiddenSectors;
+ DWORD PartitionNumber;
+ BYTE PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ BOOLEAN RewritePartition;
+} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
+
+typedef struct _DRIVE_LAYOUT_INFORMATION
+{
+ DWORD PartitionCount;
+ DWORD Signature;
+ PARTITION_INFORMATION PartitionEntry[1];
} DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION;
-#if 0
typedef struct _SET_PARTITION_INFORMATION
{
ULONG PartitionType;
DWORD SectorsPerTrack;
DWORD BytesPerSector;
} DISK_GEOMETRY, *PDISK_GEOMETRY;
-#endif
#endif /* __INCLUDE_DISK_H */