mirror of
https://github.com/reactos/reactos.git
synced 2025-05-23 19:14:48 +00:00
changes to support FCB and CCB better
svn path=/trunk/; revision=146
This commit is contained in:
parent
20ef31f3cc
commit
06a593cc64
1 changed files with 44 additions and 45 deletions
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct _BootSector {
|
struct _BootSector {
|
||||||
unsigned char magic0, res0, magic1;
|
unsigned char magic0, res0, magic1;
|
||||||
unsigned char OEMName[8];
|
unsigned char OEMName[8];
|
||||||
|
@ -66,43 +68,6 @@ typedef struct _slot slot;
|
||||||
|
|
||||||
#define BLOCKSIZE 512
|
#define BLOCKSIZE 512
|
||||||
|
|
||||||
// Put the rest in struct.h
|
|
||||||
/*
|
|
||||||
typedef unsigned int uint32;
|
|
||||||
|
|
||||||
typedef struct _SFsdIdentifier {
|
|
||||||
uint32 NodeType;
|
|
||||||
uint32 NodeSize;
|
|
||||||
} SFsdIdentifier, *PtrSFsdIdentifier;
|
|
||||||
|
|
||||||
typedef struct _SFsdNTRequiredFCB {
|
|
||||||
FSRTL_COMMON_FCB_HEADER CommonFCBHeader;
|
|
||||||
SECTION_OBJECT_POINTERS SectionObject;
|
|
||||||
ERESOURCE MainResource;
|
|
||||||
ERESOURCE PagingIoResource;
|
|
||||||
} SFsdNTRequiredFCB, *PtrSFsdNTRequiredFCB;
|
|
||||||
|
|
||||||
typedef struct _SFsdFileControlBlock {
|
|
||||||
SFsdIdentifier NodeIdentifier;
|
|
||||||
SFsdNTRequiredFCB NTRequiredFCB;
|
|
||||||
SFsdDiskDependentFCB DiskDependentFCB;
|
|
||||||
struct _SFsdVolumeControlBlock *PtrVCB;
|
|
||||||
LIST_ENTRY NextFCB;
|
|
||||||
uint32 FCBFlags;
|
|
||||||
LIST_ENTRY NextCCB;
|
|
||||||
SHARE_ACCESS FCBShareAccess;
|
|
||||||
uint32 LazyWriterThreadID;
|
|
||||||
uint32 ReferenceCount;
|
|
||||||
uint32 OpenHandleCount;
|
|
||||||
PtrSFsdObjectName FCBName;
|
|
||||||
LARGE_INTEGER CreationTime;
|
|
||||||
LARGE_INTEGER LastAccessTime;
|
|
||||||
LARGE_INTEGER LastWriteTime;
|
|
||||||
SFsdFileLockAnchorFCB ByteRangeLock;
|
|
||||||
OPLOCK FCBOplock;
|
|
||||||
} SFsdFCB, *PtrSFsdFCB;
|
|
||||||
|
|
||||||
*/
|
|
||||||
#define FAT16 (1)
|
#define FAT16 (1)
|
||||||
#define FAT12 (2)
|
#define FAT12 (2)
|
||||||
#define FAT32 (3)
|
#define FAT32 (3)
|
||||||
|
@ -118,13 +83,47 @@ typedef struct
|
||||||
unsigned char* FAT;
|
unsigned char* FAT;
|
||||||
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
|
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
|
||||||
|
|
||||||
|
typedef struct _FSRTL_COMMON_FCB_HEADER{
|
||||||
|
char IsFastIoPossible;//is char the realtype ?
|
||||||
|
ERESOURCE Resource;
|
||||||
|
ERESOURCE PagingIoResource;
|
||||||
|
ULONG Flags;// is long the real type ?
|
||||||
|
LARGE_INTEGER AllocationSize;
|
||||||
|
LARGE_INTEGER FileSize;
|
||||||
|
LARGE_INTEGER ValidDataLength;
|
||||||
|
// other fields ??
|
||||||
|
} FSRTL_COMMON_FCB_HEADER;
|
||||||
|
|
||||||
|
typedef struct _SFsdNTRequiredFCB {
|
||||||
|
FSRTL_COMMON_FCB_HEADER CommonFCBHeader;
|
||||||
|
SECTION_OBJECT_POINTERS SectionObject;
|
||||||
|
ERESOURCE MainResource;
|
||||||
|
ERESOURCE PagingIoResource;
|
||||||
|
} SFsdNTRequiredFCB, *PtrSFsdNTRequiredFCB;
|
||||||
|
|
||||||
|
struct _VfatFCB;
|
||||||
|
typedef struct _VfatFCB
|
||||||
|
{
|
||||||
|
SFsdNTRequiredFCB NTRequiredFCB;
|
||||||
|
FATDirEntry entry;
|
||||||
|
WCHAR *ObjectName; // point on filename (250 chars max) in PathName
|
||||||
|
WCHAR PathName[261];// path+filename 260 max
|
||||||
|
long RefCount;
|
||||||
|
PDEVICE_EXTENSION pDevExt;
|
||||||
|
struct _VfatFCB * nextFcb, *prevFcb;
|
||||||
|
struct _VfatFCB * parentFcb;
|
||||||
|
} VfatFCB, *PVfatFCB;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
FATDirEntry entry;
|
VfatFCB * pFcb;
|
||||||
WCHAR ObjectName[251];// filename has 250 characters max
|
LIST_ENTRY NextCCB;
|
||||||
ULONG StartSector;
|
PFILE_OBJECT PtrFileObject;
|
||||||
ULONG StartEntry;//for DirectoryControl
|
LARGE_INTEGER CurrentByteOffset;
|
||||||
} FCB, *PFCB;
|
ULONG StartSector; // for DirectoryControl
|
||||||
|
ULONG StartEntry; //for DirectoryControl
|
||||||
|
// PSTRING DirectorySearchPattern;// for DirectoryControl ?
|
||||||
|
} VfatCCB, *PVfatCCB;
|
||||||
|
|
||||||
|
|
||||||
#define ENTRIES_PER_SECTOR (BLOCKSIZE / sizeof(FATDirEntry))
|
#define ENTRIES_PER_SECTOR (BLOCKSIZE / sizeof(FATDirEntry))
|
||||||
|
@ -154,8 +153,8 @@ BOOLEAN VFATWriteSectors(IN PDEVICE_OBJECT pDeviceObject,
|
||||||
IN UCHAR* Buffer);
|
IN UCHAR* Buffer);
|
||||||
|
|
||||||
//internal functions in iface.c :
|
//internal functions in iface.c :
|
||||||
NTSTATUS FsdGetStandardInformation(PFCB FCB, PDEVICE_OBJECT DeviceObject,
|
NTSTATUS FsdGetStandardInformation(PVfatFCB FCB, PDEVICE_OBJECT DeviceObject,
|
||||||
PFILE_STANDARD_INFORMATION StandardInfo);
|
PFILE_STANDARD_INFORMATION StandardInfo);
|
||||||
NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PFCB Fcb,
|
NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PVfatFCB Fcb,
|
||||||
PFCB Parent, PWSTR FileToFind,ULONG *StartSector,ULONG *Entry);
|
PVfatFCB Parent, PWSTR FileToFind,ULONG *StartSector,ULONG *Entry);
|
||||||
wchar_t * vfat_wcsncpy(wchar_t * dest, const wchar_t *src,size_t wcount);
|
wchar_t * vfat_wcsncpy(wchar_t * dest, const wchar_t *src,size_t wcount);
|
||||||
|
|
Loading…
Reference in a new issue