[CDFS]
[reactos.git] / reactos / drivers / filesystems / cdfs / cdfs.h
index 1d1db6f..5ece03a 100644 (file)
@@ -2,15 +2,14 @@
 #define CDFS_H
 
 #include <ntifs.h>
-#include <ntddk.h>
 #include <ntddcdrm.h>
+#include <pseh/pseh2.h>
 
 #define CDFS_BASIC_SECTOR 2048
 #define CDFS_PRIMARY_DESCRIPTOR_LOCATION 16
 #define BLOCKSIZE CDFS_BASIC_SECTOR
 #define CDFS_MAX_NAME_LEN 256
 
-
 /* Volume descriptor types (VdType) */
 #define BOOT_VOLUME_DESCRIPTOR_TYPE            0
 #define PRIMARY_VOLUME_DESCRIPTOR_TYPE         1
@@ -162,6 +161,10 @@ typedef struct
   PFILE_OBJECT StreamFileObject;
 
   CDINFO CdInfo;
+
+  /* Notifications */
+  LIST_ENTRY NotifyList;
+  PNOTIFY_SYNC NotifySync;
 } DEVICE_EXTENSION, *PDEVICE_EXTENSION, VCB, *PVCB;
 
 
@@ -171,7 +174,7 @@ typedef struct
 
 #define MAX_PATH                260
 
-typedef struct _CDFS_SHORT_NAME 
+typedef struct _CDFS_SHORT_NAME
 {
     LIST_ENTRY Entry;
     LARGE_INTEGER StreamOffset;
@@ -191,8 +194,9 @@ typedef struct _FCB
 
   UNICODE_STRING ShortNameU;
 
-  WCHAR *ObjectName;           /* point on filename (250 chars max) in PathName */
-  WCHAR PathName[MAX_PATH];    /* path+filename 260 max */
+  WCHAR *ObjectName;                   /* point on filename (250 chars max) in PathName */
+  UNICODE_STRING PathName;             /* path+filename 260 max */
+  WCHAR PathNameBuffer[MAX_PATH];      /* Buffer for PathName */
   WCHAR ShortNameBuffer[13];
 
   LIST_ENTRY FcbListEntry;
@@ -200,8 +204,8 @@ typedef struct _FCB
 
   ULONG DirIndex;
 
-  LARGE_INTEGER IndexNumber;   /* HighPart: Parent directory start sector */
-                               /* LowPart: Directory record offset in the parent directory file */
+  LARGE_INTEGER IndexNumber;           /* HighPart: Parent directory start sector */
+                                       /* LowPart: Directory record offset in the parent directory file */
 
   LONG RefCount;
   ULONG Flags;
@@ -227,8 +231,12 @@ typedef struct _CCB
   ULONG LastOffset;
 } CCB, *PCCB;
 
-#define TAG_CCB 'BCCI'
-#define TAG_FCB 'BCFI'
+#define CDFS_TAG                'sfdC'
+#define CDFS_CCB_TAG            'ccdC'
+#define CDFS_NONPAGED_FCB_TAG   'nfdC'
+#define CDFS_SHORT_NAME_TAG     'sgdC'
+#define CDFS_SEARCH_PATTERN_TAG 'eedC'
+#define CDFS_FILENAME_TAG       'nFdC'
 
 typedef struct
 {
@@ -236,6 +244,7 @@ typedef struct
   PDEVICE_OBJECT DeviceObject;
   ULONG Flags;
   CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
+  FAST_IO_DISPATCH FastIoDispatch;
 } CDFS_GLOBAL_DATA, *PCDFS_GLOBAL_DATA;
 
 extern PCDFS_GLOBAL_DATA CdfsGlobalData;
@@ -421,9 +430,9 @@ CdfsFileFlagsToAttributes(PFCB Fcb,
 
 VOID
 CdfsShortNameCacheGet
-(PFCB DirectoryFcb, 
- PLARGE_INTEGER StreamOffset, 
- PUNICODE_STRING LongName, 
+(PFCB DirectoryFcb,
+ PLARGE_INTEGER StreamOffset,
+ PUNICODE_STRING LongName,
  PUNICODE_STRING ShortName);
 
 /* rw.c */
@@ -472,4 +481,8 @@ CdfsAcquireForLazyWrite(IN PVOID Context,
 VOID NTAPI
 CdfsReleaseFromLazyWrite(IN PVOID Context);
 
-#endif //CDFS_H
+FAST_IO_CHECK_IF_POSSIBLE CdfsFastIoCheckIfPossible;
+FAST_IO_READ CdfsFastIoRead;
+FAST_IO_WRITE CdfsFastIoWrite;
+
+#endif /* CDFS_H */