1 BOOLEAN
VFATReadSectors(IN PDEVICE_OBJECT pDeviceObject
,
6 BOOLEAN
VFATWriteSectors(IN PDEVICE_OBJECT pDeviceObject
,
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
;
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
));
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
;
37 unsigned short FATSectors
, SectorsPerTrack
, Heads
;
38 unsigned long HiddenSectors
, SectorsHuge
;
39 unsigned long FATSectors32
;
41 unsigned char VolumeLabel
[11], SysType
[8];
42 unsigned char Res2
[422];
43 } __attribute__((packed
));
45 typedef struct _BootSector BootSector
;
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
));
55 typedef struct _FATDirEntry FATDirEntry
;
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
));
70 typedef struct _slot slot
;
74 // Put the rest in struct.h
76 typedef unsigned int uint32;
78 typedef struct _SFsdIdentifier {
81 } SFsdIdentifier, *PtrSFsdIdentifier;
83 typedef struct _SFsdNTRequiredFCB {
84 FSRTL_COMMON_FCB_HEADER CommonFCBHeader;
85 SECTION_OBJECT_POINTERS SectionObject;
86 ERESOURCE MainResource;
87 ERESOURCE PagingIoResource;
88 } SFsdNTRequiredFCB, *PtrSFsdNTRequiredFCB;
90 typedef struct _SFsdFileControlBlock {
91 SFsdIdentifier NodeIdentifier;
92 SFsdNTRequiredFCB NTRequiredFCB;
93 SFsdDiskDependentFCB DiskDependentFCB;
94 struct _SFsdVolumeControlBlock *PtrVCB;
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;
108 } SFsdFCB, *PtrSFsdFCB;