- Add DDK alignment macros and move/rename the ones in the NDK for user-mode only...
[reactos.git] / reactos / drivers / fs / vfat / vfat.h
index 37a6d01..d1f8f1d 100644 (file)
@@ -1,32 +1,19 @@
-/* $Id$ */
-
-#include <ddk/ntifs.h>
-#include <ddk/ntdddisk.h>
-#include <limits.h>
 #include <debug.h>
+#include <ntifs.h>
+#include <ntdddisk.h>
+#include <reactos/helper.h>
 
-#define USE_ROS_CC_AND_FS
-
-/* FIXME */
-#ifdef __USE_W32API
-NTSTATUS NTAPI RtlOemStringToUnicodeString(PUNICODE_STRING, CONST STRING *, BOOLEAN);
-NTSTATUS NTAPI RtlDowncaseUnicodeString(PUNICODE_STRING, PCUNICODE_STRING, BOOLEAN);
-NTSTATUS NTAPI RtlUnicodeStringToOemString(POEM_STRING, PCUNICODE_STRING, BOOLEAN);
-#undef DeleteFile /* FIXME */
-#endif
-
-#ifdef USE_ROS_CC_AND_FS
-NTSTATUS STDCALL CcRosInitializeFileCache(PFILE_OBJECT, ULONG);
-NTSTATUS STDCALL CcRosReleaseFileCache(PFILE_OBJECT);
-#define FSCTL_ROS_QUERY_LCN_MAPPING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
-typedef struct _ROS_QUERY_LCN_MAPPING { LARGE_INTEGER LcnDiskOffset; } ROS_QUERY_LCN_MAPPING, *PROS_QUERY_LCN_MAPPING;
-#endif
-
-#define KEBUGCHECK(a) DbgPrint("KeBugCheck at %s:%i\n",__FILE__,__LINE__), KeBugCheck(a)
-#define KEBUGCHECKEX(a,b,c,d,e) DbgPrint("KeBugCheckEx at %s:%i\n",__FILE__,__LINE__), KeBugCheckEx(a,b,c,d,e)
+#ifdef __GNUC__
+#include <ndk/ntndk.h>
+#include <ccros.h>
 
-#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
+#define USE_ROS_CC_AND_FS
+#else
+#define KEBUGCHECK KeBugCheck
+#define KEBUGCHECKEX KeBugCheckEx
 #define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
+#define ROUND_UP(N, S) ROUND_DOWN((N) + (S) - 1, (S))
+#endif
 
 #include <pshpack1.h>
 struct _BootSector
@@ -193,6 +180,8 @@ typedef union _DIR_ENTRY DIR_ENTRY, *PDIR_ENTRY;
 #define VCB_VOLUME_LOCKED       0x0001
 #define VCB_DISMOUNT_PENDING    0x0002
 #define VCB_IS_FATX             0x0004
+#define VCB_IS_DIRTY            0x4000 /* Volume is dirty */
+#define VCB_CLEAR_DIRTY         0x8000 /* Clean dirty flag at shutdown */
 
 typedef struct
 {
@@ -250,17 +239,18 @@ typedef struct DEVICE_EXTENSION
   ULONG LastAvailableCluster;
   ULONG AvailableClusters;
   BOOLEAN AvailableClustersValid;
-  ULONG Flags;  
+  ULONG Flags;
   struct _VFATFCB * VolumeFcb;
 
   /* Pointers to functions for manipulating FAT. */
   PGET_NEXT_CLUSTER GetNextCluster;
   PFIND_AND_MARK_AVAILABLE_CLUSTER FindAndMarkAvailableCluster;
   PWRITE_CLUSTER WriteCluster;
-  
+  ULONG CleanShutBitMask;
+
   /* Pointers to functions for manipulating directory entries. */
   PGET_NEXT_DIR_ENTRY GetNextDirEntry;
-  
+
   ULONG BaseDateYear;
 
   LIST_ENTRY VolumeListEntry;
@@ -301,7 +291,7 @@ typedef struct _VFATFCB
 
   /* directory entry for this file or directory */
   DIR_ENTRY entry;
-  
+
   /* Pointer to attributes in entry */
   PUCHAR Attributes;
 
@@ -434,7 +424,7 @@ typedef struct _VFAT_DIRENTRY_CONTEXT
 
 /*  ------------------------------------------------------  shutdown.c  */
 
-NTSTATUS STDCALL VfatShutdown (PDEVICE_OBJECT DeviceObject,
+NTSTATUS NTAPI VfatShutdown (PDEVICE_OBJECT DeviceObject,
                                PIRP Irp);
 
 /*  --------------------------------------------------------  volume.c  */
@@ -489,10 +479,6 @@ BOOLEAN FsdSystemTimeToDosDateTime (PDEVICE_EXTENSION DeviceExt,
 
 NTSTATUS VfatCreate (PVFAT_IRP_CONTEXT IrpContext);
 
-NTSTATUS VfatOpenFile (PDEVICE_EXTENSION DeviceExt,
-                       PFILE_OBJECT FileObject,
-                      PVFATFCB* parentFcb);
-
 NTSTATUS FindFile (PDEVICE_EXTENSION DeviceExt,
                    PVFATFCB Parent,
                    PUNICODE_STRING FileToFindU,
@@ -546,14 +532,14 @@ NTSTATUS VfatQueryInformation (PVFAT_IRP_CONTEXT IrpContext);
 NTSTATUS VfatSetInformation (PVFAT_IRP_CONTEXT IrpContext);
 
 NTSTATUS
-VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject, 
+VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject,
                                 PVFATFCB Fcb,
                                 PDEVICE_EXTENSION DeviceExt,
                                 PLARGE_INTEGER AllocationSize);
 
 /*  ---------------------------------------------------------  iface.c  */
 
-NTSTATUS STDCALL DriverEntry (PDRIVER_OBJECT DriverObject,
+NTSTATUS NTAPI DriverEntry (PDRIVER_OBJECT DriverObject,
                               PUNICODE_STRING RegistryPath);
 
 /*  ---------------------------------------------------------  dirwr.c  */
@@ -578,8 +564,8 @@ vfatFindDirSpace(PDEVICE_EXTENSION DeviceExt,
 /*  --------------------------------------------------------  string.c  */
 
 VOID
-vfatSplitPathName(PUNICODE_STRING PathNameU, 
-                 PUNICODE_STRING DirNameU, 
+vfatSplitPathName(PUNICODE_STRING PathNameU,
+                 PUNICODE_STRING DirNameU,
                  PUNICODE_STRING FileNameU);
 
 BOOLEAN vfatIsLongIllegal(WCHAR c);
@@ -737,7 +723,7 @@ PVFAT_IRP_CONTEXT VfatAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
 
 VOID VfatFreeIrpContext(PVFAT_IRP_CONTEXT IrpContext);
 
-NTSTATUS STDCALL VfatBuildRequest (PDEVICE_OBJECT DeviceObject,
+NTSTATUS NTAPI VfatBuildRequest (PDEVICE_OBJECT DeviceObject,
                                    PIRP Irp);
 
 PVOID VfatGetUserBuffer(IN PIRP);
@@ -745,8 +731,8 @@ PVOID VfatGetUserBuffer(IN PIRP);
 NTSTATUS VfatLockUserBuffer(IN PIRP, IN ULONG,
                             IN LOCK_OPERATION);
 
-NTSTATUS 
-VfatSetExtendedAttributes(PFILE_OBJECT FileObject, 
+NTSTATUS
+VfatSetExtendedAttributes(PFILE_OBJECT FileObject,
                          PVOID Ea,
                          ULONG EaLength);
 /*  ------------------------------------------------------------- flush.c  */