Various changes to support the executable/driver loader
[reactos.git] / reactos / drivers / fs / vfat / vfat.h
1 BOOLEAN VFATReadSectors(IN PDEVICE_OBJECT pDeviceObject,
2 IN ULONG DiskSector,
3 IN ULONG SectorCount,
4 IN UCHAR* Buffer);
5
6 BOOLEAN VFATWriteSectors(IN PDEVICE_OBJECT pDeviceObject,
7 IN ULONG DiskSector,
8 IN ULONG SectorCount,
9 IN UCHAR* Buffer);
10
11 struct _BootSector {
12 unsigned char magic0, res0, magic1;
13 unsigned char OEMName[8];
14 unsigned short BytesPerSector;
15 unsigned char SectorsPerCluster;
16 unsigned short ReservedSectors;
17 unsigned char FATCount;
18 unsigned short RootEntries, Sectors;
19 unsigned char Media;
20 unsigned short FATSectors, SectorsPerTrack, Heads;
21 unsigned long HiddenSectors, SectorsHuge;
22 unsigned char Drive, Res1, Sig;
23 unsigned long VolumeID;
24 unsigned char VolumeLabel[11], SysType[8];
25 unsigned char Res2[450];
26 } __attribute__((packed));
27
28 struct _BootSector32 {
29 unsigned char magic0, res0, magic1;
30 unsigned char OEMName[8];
31 unsigned short BytesPerSector;
32 unsigned char SectorsPerCluster;
33 unsigned short ReservedSectors;
34 unsigned char FATCount;
35 unsigned short RootEntries, Sectors;
36 unsigned char Media;
37 unsigned short FATSectors, SectorsPerTrack, Heads;
38 unsigned long HiddenSectors, SectorsHuge;
39 unsigned long FATSectors32;
40 unsigned char x[31];
41 unsigned char VolumeLabel[11], SysType[8];
42 unsigned char Res2[422];
43 } __attribute__((packed));
44
45 typedef struct _BootSector BootSector;
46
47 struct _FATDirEntry {
48 unsigned char Filename[8], Ext[3], Attrib, Res[8];
49 unsigned short FirstClusterHigh;// higher
50 unsigned char Res2[4];
51 unsigned short FirstCluster;
52 unsigned long FileSize;
53 } __attribute__((packed));
54
55 typedef struct _FATDirEntry FATDirEntry;
56
57 struct _slot
58 {
59 unsigned char id; // sequence number for slot
60 WCHAR name0_4[5]; // first 5 characters in name
61 unsigned char attr; // attribute byte
62 unsigned char reserved; // always 0
63 unsigned char alias_checksum; // checksum for 8.3 alias
64 WCHAR name5_10[6]; // 6 more characters in name
65 unsigned char start[2]; // starting cluster number
66 WCHAR name11_12[2]; // last 2 characters in name
67 } __attribute__((packed));
68
69
70 typedef struct _slot slot;
71
72 #define BLOCKSIZE 512
73
74 // Put the rest in struct.h
75 /*
76 typedef unsigned int uint32;
77
78 typedef struct _SFsdIdentifier {
79 uint32 NodeType;
80 uint32 NodeSize;
81 } SFsdIdentifier, *PtrSFsdIdentifier;
82
83 typedef struct _SFsdNTRequiredFCB {
84 FSRTL_COMMON_FCB_HEADER CommonFCBHeader;
85 SECTION_OBJECT_POINTERS SectionObject;
86 ERESOURCE MainResource;
87 ERESOURCE PagingIoResource;
88 } SFsdNTRequiredFCB, *PtrSFsdNTRequiredFCB;
89
90 typedef struct _SFsdFileControlBlock {
91 SFsdIdentifier NodeIdentifier;
92 SFsdNTRequiredFCB NTRequiredFCB;
93 SFsdDiskDependentFCB DiskDependentFCB;
94 struct _SFsdVolumeControlBlock *PtrVCB;
95 LIST_ENTRY NextFCB;
96 uint32 FCBFlags;
97 LIST_ENTRY NextCCB;
98 SHARE_ACCESS FCBShareAccess;
99 uint32 LazyWriterThreadID;
100 uint32 ReferenceCount;
101 uint32 OpenHandleCount;
102 PtrSFsdObjectName FCBName;
103 LARGE_INTEGER CreationTime;
104 LARGE_INTEGER LastAccessTime;
105 LARGE_INTEGER LastWriteTime;
106 SFsdFileLockAnchorFCB ByteRangeLock;
107 OPLOCK FCBOplock;
108 } SFsdFCB, *PtrSFsdFCB;
109
110 */