#include <dos.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 USE_ROS_CC_AND_FS
#if 0
#ifndef _MSC_VER
}
HASHENTRY;
-#define FCB_HASH_TABLE_SIZE 65536
-
typedef struct DEVICE_EXTENSION *PDEVICE_EXTENSION;
typedef NTSTATUS (*PGET_NEXT_CLUSTER)(PDEVICE_EXTENSION,ULONG,PULONG);
PVPB SpareVPB;
} DEVICE_EXTENSION, VCB, *PVCB;
+#define VFAT_BREAK_ON_CORRUPTION 1
+
typedef struct
{
PDRIVER_OBJECT DriverObject;
ULONG FileSize;
USHORT CreationDate;
USHORT CreationTime;
+ BOOLEAN InPlace;
} VFAT_MOVE_CONTEXT, *PVFAT_MOVE_CONTEXT;
FORCEINLINE
vfatUpdateFCB(
PDEVICE_EXTENSION pVCB,
PVFATFCB Fcb,
- PUNICODE_STRING LongName,
- PUNICODE_STRING ShortName,
+ PVFAT_DIRENTRY_CONTEXT DirContext,
PVFATFCB ParentFcb);
VOID
/* finfo.c */
+NTSTATUS
+VfatGetStandardInformation(
+ PVFATFCB FCB,
+ PFILE_STANDARD_INFORMATION StandardInfo,
+ PULONG BufferLength);
+
+NTSTATUS
+VfatGetBasicInformation(
+ PFILE_OBJECT FileObject,
+ PVFATFCB FCB,
+ PDEVICE_OBJECT DeviceObject,
+ PFILE_BASIC_INFORMATION BasicInfo,
+ PULONG BufferLength);
+
NTSTATUS
VfatQueryInformation(
PVFAT_IRP_CONTEXT IrpContext);