ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

vfat.h File Reference
#include <ddk/ntifs.h>
#include <ddk/ntdddisk.h>
#include <ndk/ntndk.h>
#include <limits.h>
#include <debug.h>
#include <pshpack1.h>
#include <poppack.h>

Go to the source code of this file.

Data Structures

struct  BootSector
struct  _BootSector32
struct  _BootSectorFatX
struct  _FsInfoSector
struct  PFAT_DIR_ENTRY
struct  PFATX_DIR_ENTRY
struct  slot
union  PDIR_ENTRY
struct  FATINFO
struct  HASHENTRY
struct  PVCB
struct  VFAT_GLOBAL_DATA
struct  PVFATFCB
struct  PVFATCCB
struct  PDOSTIME
struct  PDOSDATE
struct  VFAT_IRP_CONTEXT
struct  PVFAT_DIRENTRY_CONTEXT

Defines

#define USE_ROS_CC_AND_FS
#define VFAT_CASE_LOWER_BASE   8
#define VFAT_CASE_LOWER_EXT   16
#define LONGNAME_MAX_LENGTH   256
#define ENTRY_DELETED(DeviceExt, DirEntry)   ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_DELETED(&((DirEntry)->FatX)) : FAT_ENTRY_DELETED(&((DirEntry)->Fat)))
#define ENTRY_VOLUME(DeviceExt, DirEntry)   ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_VOLUME(&((DirEntry)->FatX)) : FAT_ENTRY_VOLUME(&((DirEntry)->Fat)))
#define ENTRY_END(DeviceExt, DirEntry)   ((DeviceExt)->Flags & VCB_IS_FATX ? FATX_ENTRY_END(&((DirEntry)->FatX)) : FAT_ENTRY_END(&((DirEntry)->Fat)))
#define FAT_ENTRY_DELETED(DirEntry)   ((DirEntry)->Filename[0] == 0xe5)
#define FAT_ENTRY_END(DirEntry)   ((DirEntry)->Filename[0] == 0)
#define FAT_ENTRY_LONG(DirEntry)   (((DirEntry)->Attrib & 0x3f) == 0x0f)
#define FAT_ENTRY_VOLUME(DirEntry)   (((DirEntry)->Attrib & 0x1f) == 0x08)
#define FATX_ENTRY_DELETED(DirEntry)   ((DirEntry)->FilenameLength == 0xe5)
#define FATX_ENTRY_END(DirEntry)   ((DirEntry)->FilenameLength == 0xff)
#define FATX_ENTRY_LONG(DirEntry)   (FALSE)
#define FATX_ENTRY_VOLUME(DirEntry)   (((DirEntry)->Attrib & 0x1f) == 0x08)
#define FAT_ENTRIES_PER_PAGE   (PAGE_SIZE / sizeof (FAT_DIR_ENTRY))
#define FATX_ENTRIES_PER_PAGE   (PAGE_SIZE / sizeof (FATX_DIR_ENTRY))
#define BLOCKSIZE   512
#define FAT16   (1)
#define FAT12   (2)
#define FAT32   (3)
#define FATX16   (4)
#define FATX32   (5)
#define VCB_VOLUME_LOCKED   0x0001
#define VCB_DISMOUNT_PENDING   0x0002
#define VCB_IS_FATX   0x0004
#define VCB_IS_DIRTY   0x4000 /* Volume is dirty */
#define VCB_CLEAR_DIRTY   0x8000 /* Clean dirty flag at shutdown */
#define FCB_HASH_TABLE_SIZE   65536
#define FCB_CACHE_INITIALIZED   0x0001
#define FCB_DELETE_PENDING   0x0002
#define FCB_IS_FAT   0x0004
#define FCB_IS_PAGE_FILE   0x0008
#define FCB_IS_VOLUME   0x0010
#define FCB_IS_DIRTY   0x0020
#define FCB_IS_FATX_ENTRY   0x0040
#define TAG_CCB   'BCCV'
#define TAG_FCB   'BCFV'
#define TAG_IRP   'PRIV'
#define ENTRIES_PER_SECTOR   (BLOCKSIZE / sizeof(FATDirEntry))
#define IRPCONTEXT_CANWAIT   0x0001
#define IRPCONTEXT_PENDINGRETURNED   0x0002

Typedefs

typedef struct FATINFOPFATINFO
typedef NTSTATUS(* PGET_NEXT_CLUSTER )(PDEVICE_EXTENSION, ULONG, PULONG)
typedef NTSTATUS(* PFIND_AND_MARK_AVAILABLE_CLUSTER )(PDEVICE_EXTENSION, PULONG)
typedef NTSTATUS(* PWRITE_CLUSTER )(PDEVICE_EXTENSION, ULONG, ULONG, PULONG)
typedef NTSTATUS(* PGET_NEXT_DIR_ENTRY )(PVOID *, PVOID *, struct _VFATFCB *, struct _VFAT_DIRENTRY_CONTEXT *, BOOLEAN)
typedef struct VFAT_GLOBAL_DATAPVFAT_GLOBAL_DATA
typedef struct VFAT_IRP_CONTEXTPVFAT_IRP_CONTEXT

Functions

NTSTATUS NTAPI VfatShutdown (PDEVICE_OBJECT DeviceObject, PIRP Irp)
NTSTATUS VfatQueryVolumeInformation (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatSetVolumeInformation (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatReadDisk (IN PDEVICE_OBJECT pDeviceObject, IN PLARGE_INTEGER ReadOffset, IN ULONG ReadLength, IN PUCHAR Buffer, IN BOOLEAN Override)
NTSTATUS VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, IN PLARGE_INTEGER ReadOffset, IN ULONG ReadLength, IN ULONG BufferOffset, IN BOOLEAN Wait)
NTSTATUS VfatWriteDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, IN PLARGE_INTEGER WriteOffset, IN ULONG WriteLength, IN ULONG BufferOffset, IN BOOLEAN Wait)
NTSTATUS VfatBlockDeviceIoControl (IN PDEVICE_OBJECT DeviceObject, IN ULONG CtlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG pOutputBufferSize, IN BOOLEAN Override)
NTSTATUS VfatDirectoryControl (PVFAT_IRP_CONTEXT)
BOOLEAN FsdDosDateTimeToSystemTime (PDEVICE_EXTENSION DeviceExt, USHORT DosDate, USHORT DosTime, PLARGE_INTEGER SystemTime)
BOOLEAN FsdSystemTimeToDosDateTime (PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER SystemTime, USHORT *pDosDate, USHORT *pDosTime)
NTSTATUS VfatCreate (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatOpenFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, PVFATFCB *parentFcb)
NTSTATUS FindFile (PDEVICE_EXTENSION DeviceExt, PVFATFCB Parent, PUNICODE_STRING FileToFindU, PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First)
VOID vfat8Dot3ToString (PFAT_DIR_ENTRY pEntry, PUNICODE_STRING NameU)
NTSTATUS ReadVolumeLabel (PDEVICE_EXTENSION DeviceExt, PVPB Vpb)
NTSTATUS VfatClose (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatCloseFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
NTSTATUS VfatCleanup (PVFAT_IRP_CONTEXT IrpContext)
VOID VfatInitFastIoRoutines (PFAST_IO_DISPATCH FastIoDispatch)
BOOLEAN NTAPI VfatAcquireForLazyWrite (IN PVOID Context, IN BOOLEAN Wait)
VOID NTAPI VfatReleaseFromLazyWrite (IN PVOID Context)
BOOLEAN NTAPI VfatAcquireForReadAhead (IN PVOID Context, IN BOOLEAN Wait)
VOID NTAPI VfatReleaseFromReadAhead (IN PVOID Context)
NTSTATUS VfatFileSystemControl (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatQueryInformation (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatSetInformation (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatSetAllocationSizeInformation (PFILE_OBJECT FileObject, PVFATFCB Fcb, PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER AllocationSize)
NTSTATUS NTAPI DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
NTSTATUS VfatAddEntry (PDEVICE_EXTENSION DeviceExt, PUNICODE_STRING PathNameU, PVFATFCB *Fcb, PVFATFCB ParentFcb, ULONG RequestedOptions, UCHAR ReqAttr)
NTSTATUS VfatUpdateEntry (PVFATFCB pFcb)
NTSTATUS VfatDelEntry (PDEVICE_EXTENSION, PVFATFCB)
BOOLEAN vfatFindDirSpace (PDEVICE_EXTENSION DeviceExt, PVFATFCB pDirFcb, ULONG nbSlots, PULONG start)
VOID vfatSplitPathName (PUNICODE_STRING PathNameU, PUNICODE_STRING DirNameU, PUNICODE_STRING FileNameU)
BOOLEAN vfatIsLongIllegal (WCHAR c)
BOOLEAN wstrcmpjoki (PWSTR s1, PWSTR s2)
NTSTATUS FAT12GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster)
NTSTATUS FAT12FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster)
NTSTATUS FAT12WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue)
NTSTATUS FAT16GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster)
NTSTATUS FAT16FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster)
NTSTATUS FAT16WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue)
NTSTATUS FAT32GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster)
NTSTATUS FAT32FindAndMarkAvailableCluster (PDEVICE_EXTENSION DeviceExt, PULONG Cluster)
NTSTATUS FAT32WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue, PULONG OldValue)
NTSTATUS OffsetToCluster (PDEVICE_EXTENSION DeviceExt, ULONG FirstCluster, ULONG FileOffset, PULONG Cluster, BOOLEAN Extend)
ULONGLONG ClusterToSector (PDEVICE_EXTENSION DeviceExt, ULONG Cluster)
NTSTATUS GetNextCluster (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster)
NTSTATUS GetNextClusterExtend (PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster, PULONG NextCluster)
NTSTATUS CountAvailableClusters (PDEVICE_EXTENSION DeviceExt, PLARGE_INTEGER Clusters)
NTSTATUS WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite, ULONG NewValue)
ULONG vfatDirEntryGetFirstCluster (PDEVICE_EXTENSION pDeviceExt, PDIR_ENTRY pDirEntry)
BOOLEAN VfatIsDirectoryEmpty (PVFATFCB Fcb)
NTSTATUS FATGetNextDirEntry (PVOID *pContext, PVOID *pPage, IN PVFATFCB pDirFcb, IN PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First)
NTSTATUS FATXGetNextDirEntry (PVOID *pContext, PVOID *pPage, IN PVFATFCB pDirFcb, IN PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First)
PVFATFCB vfatNewFCB (PDEVICE_EXTENSION pVCB, PUNICODE_STRING pFileNameU)
VOID vfatDestroyFCB (PVFATFCB pFCB)
VOID vfatDestroyCCB (PVFATCCB pCcb)
VOID vfatGrabFCB (PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
VOID vfatReleaseFCB (PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
VOID vfatAddFCBToTable (PDEVICE_EXTENSION pVCB, PVFATFCB pFCB)
PVFATFCB vfatGrabFCBFromTable (PDEVICE_EXTENSION pDeviceExt, PUNICODE_STRING pFileNameU)
PVFATFCB vfatMakeRootFCB (PDEVICE_EXTENSION pVCB)
PVFATFCB vfatOpenRootFCB (PDEVICE_EXTENSION pVCB)
BOOLEAN vfatFCBIsDirectory (PVFATFCB FCB)
BOOLEAN vfatFCBIsRoot (PVFATFCB FCB)
NTSTATUS vfatAttachFCBToFileObject (PDEVICE_EXTENSION vcb, PVFATFCB fcb, PFILE_OBJECT fileObject)
NTSTATUS vfatDirFindFile (PDEVICE_EXTENSION pVCB, PVFATFCB parentFCB, PUNICODE_STRING FileToFindU, PVFATFCB *fileFCB)
NTSTATUS vfatGetFCBForFile (PDEVICE_EXTENSION pVCB, PVFATFCB *pParentFCB, PVFATFCB *pFCB, PUNICODE_STRING pFileNameU)
NTSTATUS vfatMakeFCBFromDirEntry (PVCB vcb, PVFATFCB directoryFCB, PVFAT_DIRENTRY_CONTEXT DirContext, PVFATFCB *fileFCB)
NTSTATUS VfatRead (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatWrite (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS NextCluster (PDEVICE_EXTENSION DeviceExt, ULONG FirstCluster, PULONG CurrentCluster, BOOLEAN Extend)
NTSTATUS VfatQueueRequest (PVFAT_IRP_CONTEXT IrpContext)
PVFAT_IRP_CONTEXT VfatAllocateIrpContext (PDEVICE_OBJECT DeviceObject, PIRP Irp)
VOID VfatFreeIrpContext (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS NTAPI VfatBuildRequest (PDEVICE_OBJECT DeviceObject, PIRP Irp)
PVOID VfatGetUserBuffer (IN PIRP)
NTSTATUS VfatLockUserBuffer (IN PIRP, IN ULONG, IN LOCK_OPERATION)
NTSTATUS VfatSetExtendedAttributes (PFILE_OBJECT FileObject, PVOID Ea, ULONG EaLength)
NTSTATUS VfatFlush (PVFAT_IRP_CONTEXT IrpContext)
NTSTATUS VfatFlushVolume (PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb)

Variables

PVFAT_GLOBAL_DATA VfatGlobalData

Generated on Sat May 26 2012 05:22:45 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.