- Start deprecating TAG()
[reactos.git] / reactos / drivers / filesystems / fastfat_new / fastfat.h
1 #include <ntifs.h>
2 #include <ntdddisk.h>
3 #include <debug.h>
4 #include <pseh/pseh2.h>
5
6 #include <fat.h>
7 #include <fatstruc.h>
8
9 #define Add2Ptr(P,I,T) ((T)((PUCHAR)(P) + (I)))
10 #define PtrOffset(B,O) ((ULONG)((ULONG_PTR)(O) - (ULONG_PTR)(B)))
11
12 #define TAG_CCB 'BCCV'
13 #define TAG_FCB 'BCFV'
14 #define TAG_IRP 'PRIV'
15 #define TAG_VFAT 'TAFV'
16 /* ------------------------------------------------------ shutdown.c */
17
18 DRIVER_DISPATCH FatShutdown;
19 NTSTATUS NTAPI
20 FatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp);
21
22 /* -------------------------------------------------------- volume.c */
23
24 NTSTATUS NTAPI
25 FatQueryVolumeInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp);
26
27 NTSTATUS NTAPI
28 FatSetVolumeInfo(PDEVICE_OBJECT DeviceObject, PIRP Irp);
29
30 /* ------------------------------------------------------ blockdev.c */
31 NTSTATUS
32 NTAPI
33 FatPerformLboIo(
34 IN PFAT_IRP_CONTEXT IrpContext,
35 IN PLARGE_INTEGER Offset,
36 IN SIZE_T Length);
37
38 NTSTATUS
39 FatPerformVirtualNonCachedIo(
40 IN PFAT_IRP_CONTEXT IrpContext,
41 IN PFCB Fcb,
42 IN PLARGE_INTEGER Offset,
43 IN SIZE_T Length);
44
45 PVOID
46 FatMapUserBuffer(
47 IN OUT PIRP Irp);
48
49 /* ----------------------------------------------------------- dir.c */
50
51 NTSTATUS NTAPI
52 FatDirectoryControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
53
54 /* -------------------------------------------------------- create.c */
55
56 NTSTATUS NTAPI
57 FatCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp);
58
59
60 /* --------------------------------------------------------- close.c */
61
62 NTSTATUS NTAPI
63 FatClose(PDEVICE_OBJECT DeviceObject, PIRP Irp);
64
65 /* ------------------------------------------------------- cleanup.c */
66
67 NTSTATUS NTAPI
68 FatCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp);
69
70 /* --------------------------------------------------------- fastio.c */
71
72 VOID
73 FatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch);
74
75 BOOLEAN NTAPI
76 FatAcquireForLazyWrite(IN PVOID Context,
77 IN BOOLEAN Wait);
78
79 VOID NTAPI
80 FatReleaseFromLazyWrite(IN PVOID Context);
81
82 BOOLEAN NTAPI
83 FatAcquireForReadAhead(IN PVOID Context,
84 IN BOOLEAN Wait);
85
86 VOID NTAPI
87 FatReleaseFromReadAhead(IN PVOID Context);
88
89 BOOLEAN NTAPI
90 FatNoopAcquire(IN PVOID Context,
91 IN BOOLEAN Wait);
92
93 VOID NTAPI
94 FatNoopRelease(IN PVOID Context);
95
96 /* --------------------------------------------------------- fastfat.c */
97
98 PFAT_IRP_CONTEXT NTAPI
99 FatBuildIrpContext(PIRP Irp, BOOLEAN CanWait);
100
101 VOID NTAPI
102 FatDestroyIrpContext(PFAT_IRP_CONTEXT IrpContext);
103
104 VOID
105 NTAPI
106 FatQueueRequest(IN PFAT_IRP_CONTEXT IrpContext,
107 IN PFAT_OPERATION_HANDLER OperationHandler);
108
109 VOID NTAPI
110 FatCompleteRequest(PFAT_IRP_CONTEXT IrpContext OPTIONAL,
111 PIRP Irp OPTIONAL,
112 NTSTATUS Status);
113
114
115 /* --------------------------------------------------------- lock.c */
116
117 NTSTATUS NTAPI
118 FatLockControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
119
120 /* --------------------------------------------------------- fsctl.c */
121
122 NTSTATUS NTAPI
123 FatFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
124
125 /* --------------------------------------------------------- finfo.c */
126
127 NTSTATUS NTAPI FatQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
128 NTSTATUS NTAPI FatSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
129
130 /* --------------------------------------------------------- iface.c */
131
132 NTSTATUS
133 NTAPI
134 DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath);
135
136 /* ----------------------------------------------------------- fat.c */
137 PVOID
138 FatPinPage(
139 PFAT_PAGE_CONTEXT Context,
140 LONGLONG ByteOffset);
141
142 PVOID
143 FatPinNextPage(
144 PFAT_PAGE_CONTEXT Context);
145
146 NTSTATUS
147 FatInitializeVcb(
148 IN PVCB Vcb,
149 IN PDEVICE_OBJECT TargetDeviceObject,
150 IN PVPB Vpb);
151
152 VOID
153 FatUninitializeVcb(
154 IN PVCB Vcb);
155
156 ULONG
157 FatScanFat(
158 IN PFCB Fcb,
159 IN LONGLONG Vbo, OUT PLONGLONG Lbo,
160 IN OUT PLONGLONG Length,
161 OUT PULONG Index,
162 IN BOOLEAN CanWait);
163
164 /* ------------------------------------------------------ device.c */
165
166 NTSTATUS NTAPI
167 FatDeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
168
169 NTSTATUS
170 FatPerformDevIoCtrl(PDEVICE_OBJECT DeviceObject,
171 ULONG ControlCode,
172 PVOID InputBuffer,
173 ULONG InputBufferSize,
174 PVOID OutputBuffer,
175 ULONG OutputBufferSize,
176 BOOLEAN Override);
177
178 /* ------------------------------------------------------ direntry.c */
179 VOID
180 FatFindDirent(IN OUT PFAT_FIND_DIRENT_CONTEXT Context,
181 OUT PDIR_ENTRY* Dirent,
182 OUT PUNICODE_STRING LongFileName OPTIONAL);
183
184 VOID
185 FatEnumerateDirents(IN OUT PFAT_ENUM_DIRENT_CONTEXT Context,
186 IN SIZE_T Offset);
187
188 VOID
189 FatQueryFileTimes(OUT PLARGE_INTEGER FileTimes,
190 IN PDIR_ENTRY Dirent);
191
192 /* ----------------------------------------------------------- fcb.c */
193 PFCB
194 FatLookupFcbByName(
195 IN PFCB ParentFcb,
196 IN PUNICODE_STRING Name);
197
198 BOOLEAN
199 FatLinkFcbNames(
200 IN PFCB ParentFcb,
201 IN PFCB Fcb);
202
203 VOID
204 FatUnlinkFcbNames(
205 IN PFCB ParentFcb,
206 IN PFCB Fcb);
207
208 NTSTATUS
209 FatCreateFcb(
210 OUT PFCB* CreatedFcb,
211 IN PFAT_IRP_CONTEXT IrpContext,
212 IN PFCB ParentFcb,
213 IN PDIR_ENTRY Dirent,
214 IN PUNICODE_STRING FileName,
215 IN PUNICODE_STRING LongFileName OPTIONAL);
216
217 NTSTATUS
218 FatOpenFcb(
219 OUT PFCB* Fcb,
220 IN PFAT_IRP_CONTEXT IrpContext,
221 IN PFCB ParentFcb,
222 IN PUNICODE_STRING FileName);
223
224 /* ------------------------------------------------------------ rw.c */
225
226 NTSTATUS NTAPI
227 FatRead(PDEVICE_OBJECT DeviceObject, PIRP Irp);
228
229 NTSTATUS NTAPI
230 FatWrite(PDEVICE_OBJECT DeviceObject, PIRP Irp);
231
232 /* ------------------------------------------------------------- flush.c */
233
234 NTSTATUS NTAPI
235 FatFlushBuffers(PDEVICE_OBJECT DeviceObject, PIRP Irp);
236
237
238 /* EOF */