#include <ntddcdrm.h>
#include <pseh/pseh2.h>
+#ifdef __GNUC__
+#define INIT_SECTION __attribute__((section ("INIT")))
+#else
+#define INIT_SECTION /* Done via alloc_text for MSC */
+#endif
+
#define CDFS_BASIC_SECTOR 2048
#define CDFS_PRIMARY_DESCRIPTOR_LOCATION 16
#define BLOCKSIZE CDFS_BASIC_SECTOR
ERESOURCE NameListResource;
LIST_ENTRY ShortNameList;
+ FILE_LOCK FileLock;
} FCB, *PFCB;
typedef struct _CDFS_GLOBAL_DATA
{
PDRIVER_OBJECT DriverObject;
- PDEVICE_OBJECT DeviceObject;
+ PDEVICE_OBJECT CdFsDeviceObject;
+ PDEVICE_OBJECT HddFsDeviceObject;
ULONG Flags;
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
FAST_IO_DISPATCH FastIoDispatch;
/* cleanup.c */
-DRIVER_DISPATCH CdfsCleanup;
-
NTSTATUS
NTAPI
-CdfsCleanup(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
+CdfsCleanup(
+ PCDFS_IRP_CONTEXT IrpContext);
/* close.c */
-DRIVER_DISPATCH CdfsClose;
-
NTSTATUS
NTAPI
-CdfsClose(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
+CdfsClose(
+ PCDFS_IRP_CONTEXT IrpContext);
NTSTATUS
CdfsCloseFile(PDEVICE_EXTENSION DeviceExt,
/* create.c */
-DRIVER_DISPATCH CdfsCreate;
-
NTSTATUS
NTAPI
-CdfsCreate(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
+CdfsCreate(
+ PCDFS_IRP_CONTEXT IrpContext);
/* devctrl.c */
PUNICODE_STRING LongName,
PUNICODE_STRING ShortName);
-/* rw.c */
+BOOLEAN
+CdfsIsRecordValid(IN PDEVICE_EXTENSION DeviceExt,
+ IN PDIR_RECORD Record);
+
+VOID
+CdfsGetDirEntryName(PDEVICE_EXTENSION DeviceExt,
+ PDIR_RECORD Record,
+ PWSTR Name);
-DRIVER_DISPATCH CdfsRead;
+/* rw.c */
NTSTATUS
NTAPI
-CdfsRead(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
-
-DRIVER_DISPATCH CdfsWrite;
+CdfsRead(
+ PCDFS_IRP_CONTEXT IrpContext);
NTSTATUS
NTAPI
-CdfsWrite(PDEVICE_OBJECT DeviceObject,
- PIRP Irp);
+CdfsWrite(
+ PCDFS_IRP_CONTEXT IrpContext);
/* volinfo.c */