- Update to r53061
[reactos.git] / drivers / filesystems / cdfs / cdfs.h
index 8f22905..47d7d31 100644 (file)
@@ -142,8 +142,8 @@ typedef struct _CDINFO
   ULONG JolietLevel;
   ULONG RootStart;
   ULONG RootSize;
-  WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH];
-  ULONG VolumeLabelLength;
+  WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
+  USHORT VolumeLabelLength;
   ULONG SerialNumber;
 } CDINFO, *PCDINFO;
 
@@ -162,8 +162,6 @@ typedef struct
   PFILE_OBJECT StreamFileObject;
 
   CDINFO CdInfo;
-
-
 } DEVICE_EXTENSION, *PDEVICE_EXTENSION, VCB, *PVCB;
 
 
@@ -173,6 +171,14 @@ typedef struct
 
 #define MAX_PATH                260
 
+typedef struct _CDFS_SHORT_NAME 
+{
+    LIST_ENTRY Entry;
+    LARGE_INTEGER StreamOffset;
+    UNICODE_STRING Name;
+    WCHAR NameBuffer[13];
+} CDFS_SHORT_NAME, *PCDFS_SHORT_NAME;
+
 typedef struct _FCB
 {
   FSRTL_COMMON_FCB_HEADER RFCB;
@@ -201,6 +207,9 @@ typedef struct _FCB
   ULONG Flags;
 
   DIR_RECORD Entry;
+
+  ERESOURCE  NameListResource;
+  LIST_ENTRY ShortNameList;
 } FCB, *PFCB;
 
 
@@ -218,13 +227,8 @@ typedef struct _CCB
   ULONG LastOffset;
 } CCB, *PCCB;
 
-#ifndef TAG
-#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
-#endif
-
-#define TAG_CCB TAG('I', 'C', 'C', 'B')
-
-
+#define TAG_CCB 'BCCI'
+#define TAG_FCB 'BCFI'
 
 typedef struct
 {
@@ -239,14 +243,14 @@ extern PCDFS_GLOBAL_DATA CdfsGlobalData;
 
 /* cleanup.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsCleanup(PDEVICE_OBJECT DeviceObject,
            PIRP Irp);
 
 
 /* close.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsClose(PDEVICE_OBJECT DeviceObject,
          PIRP Irp);
 
@@ -273,17 +277,21 @@ CdfsDeviceIoControl (IN PDEVICE_OBJECT DeviceObject,
                     IN OUT PULONG pOutputBufferSize,
                     IN BOOLEAN Override);
 
-
 /* create.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsCreate(PDEVICE_OBJECT DeviceObject,
           PIRP Irp);
 
+/* devctrl.c */
+
+NTSTATUS NTAPI
+CdfsDeviceControl(PDEVICE_OBJECT DeviceObject,
+                  PIRP Irp);
 
 /* dirctl.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsDirectoryControl(PDEVICE_OBJECT DeviceObject,
                     PIRP Irp);
 
@@ -358,18 +366,18 @@ CdfsGetFCBForFile(PDEVICE_EXTENSION Vcb,
 
 /* finfo.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsQueryInformation(PDEVICE_OBJECT DeviceObject,
                     PIRP Irp);
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsSetInformation(PDEVICE_OBJECT DeviceObject,
                   PIRP Irp);
 
 
 /* fsctl.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsFileSystemControl(PDEVICE_OBJECT DeviceObject,
                      PIRP Irp);
 
@@ -389,31 +397,37 @@ VOID
 CdfsFileFlagsToAttributes(PFCB Fcb,
                          PULONG FileAttributes);
 
+VOID
+CdfsShortNameCacheGet
+(PFCB DirectoryFcb, 
+ PLARGE_INTEGER StreamOffset, 
+ PUNICODE_STRING LongName, 
+ PUNICODE_STRING ShortName);
 
 /* rw.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsRead(PDEVICE_OBJECT DeviceObject,
        PIRP Irp);
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsWrite(PDEVICE_OBJECT DeviceObject,
          PIRP Irp);
 
 
 /* volinfo.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsQueryVolumeInformation(PDEVICE_OBJECT DeviceObject,
                           PIRP Irp);
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 CdfsSetVolumeInformation(PDEVICE_OBJECT DeviceObject,
                         PIRP Irp);
 
 /* cdfs.c */
 
-NTSTATUS STDCALL
+NTSTATUS NTAPI
 DriverEntry(PDRIVER_OBJECT DriverObject,
            PUNICODE_STRING RegistryPath);