[fastfat_new]
[reactos.git] / reactos / drivers / filesystems / fastfat_new / fastfat.h
index becad68..2c2a6b6 100644 (file)
@@ -3,6 +3,8 @@
 #include <debug.h>
 #include <pseh/pseh2.h>
 
+#include "fullfat.h"
+
 #include <fat.h>
 #include <fatstruc.h>
 
 #define TAG_FCB  'BCFV'
 #define TAG_IRP  'PRIV'
 #define TAG_VFAT 'TAFV'
+
+
+/* Global resource acquire/release */
+#define FatAcquireExclusiveGlobal(IrpContext) \
+( \
+    ExAcquireResourceExclusiveLite(&FatGlobalData.Resource, \
+                                   (IrpContext)->Flags & IRPCONTEXT_CANWAIT) \
+)
+
+#define FatAcquireSharedGlobal(IrpContext) \
+( \
+    ExAcquireResourceSharedLite(&FatGlobalData.Resource, \
+                                (IrpContext)->Flags & IRPCONTEXT_CANWAIT) \
+)
+
+#define FatReleaseGlobal(IrpContext) \
+{ \
+    ExReleaseResourceLite(&(FatGlobalData.Resource)); \
+}
+
+
 /*  ------------------------------------------------------  shutdown.c  */
 
 DRIVER_DISPATCH FatShutdown;
@@ -42,15 +65,15 @@ FatPerformVirtualNonCachedIo(
     IN PLARGE_INTEGER Offset,
     IN SIZE_T Length);
 
-PVOID
-FatMapUserBuffer(
-    IN OUT PIRP Irp);
-
 /*  -----------------------------------------------------------  dir.c  */
 
 NTSTATUS NTAPI
 FatDirectoryControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
 
+VOID NTAPI
+FatCreateRootDcb(IN PFAT_IRP_CONTEXT IrpContext,
+                 IN PVCB Vcb);
+
 /*  --------------------------------------------------------  create.c  */
 
 NTSTATUS NTAPI
@@ -111,6 +134,37 @@ FatCompleteRequest(PFAT_IRP_CONTEXT IrpContext OPTIONAL,
                    PIRP Irp OPTIONAL,
                    NTSTATUS Status);
 
+BOOLEAN NTAPI
+FatAcquireExclusiveVcb(IN PFAT_IRP_CONTEXT IrpContext,
+                       IN PVCB Vcb);
+
+VOID NTAPI
+FatReleaseVcb(IN PFAT_IRP_CONTEXT IrpContext,
+              IN PVCB Vcb);
+
+TYPE_OF_OPEN
+NTAPI
+FatDecodeFileObject(IN PFILE_OBJECT FileObject,
+                    OUT PVCB *Vcb,
+                    OUT PFCB *FcbOrDcb,
+                    OUT PCCB *Ccb);
+
+VOID NTAPI
+FatSetFileObject(PFILE_OBJECT FileObject,
+                 TYPE_OF_OPEN TypeOfOpen,
+                 PVOID Fcb,
+                 PCCB Ccb);
+
+PVOID FASTCALL
+FatMapUserBuffer(PIRP Irp);
+
+/* --------------------------------------------------------- fullfat.c */
+
+FF_T_SINT32
+FatWriteBlocks(FF_T_UINT8 *pBuffer, FF_T_UINT32 SectorAddress, FF_T_UINT32 Count, void *pParam);
+
+FF_T_SINT32
+FatReadBlocks(FF_T_UINT8 *pBuffer, FF_T_UINT32 SectorAddress, FF_T_UINT32 Count, void *pParam);
 
 /* ---------------------------------------------------------  lock.c */
 
@@ -145,6 +199,7 @@ FatPinNextPage(
 
 NTSTATUS
 FatInitializeVcb(
+    IN PFAT_IRP_CONTEXT IrpContext,
     IN PVCB Vcb,
     IN PDEVICE_OBJECT TargetDeviceObject,
     IN PVPB Vpb);
@@ -205,14 +260,11 @@ FatUnlinkFcbNames(
        IN PFCB ParentFcb,
        IN PFCB Fcb);
 
-NTSTATUS
+PFCB NTAPI
 FatCreateFcb(
-    OUT PFCB* CreatedFcb,
     IN PFAT_IRP_CONTEXT IrpContext,
-    IN PFCB ParentFcb,
-       IN PDIR_ENTRY Dirent,
-    IN PUNICODE_STRING FileName,
-       IN PUNICODE_STRING LongFileName OPTIONAL);
+    IN PVCB Vcb,
+    IN PFCB ParentDcb);
 
 NTSTATUS
 FatOpenFcb(
@@ -221,6 +273,15 @@ FatOpenFcb(
     IN PFCB ParentFcb,
     IN PUNICODE_STRING FileName);
 
+PFCB NTAPI
+FatFindFcb(PFAT_IRP_CONTEXT IrpContext,
+           PRTL_SPLAY_LINKS *RootNode,
+           PSTRING AnsiName,
+           PBOOLEAN IsDosName);
+
+PCCB NTAPI
+FatCreateCcb();
+
 /*  ------------------------------------------------------------  rw.c  */
 
 NTSTATUS NTAPI