16 #pragma warning(disable:4068) 17 #define __drv_mustHoldCriticalRegion 23 #include <linux/module.h> 35 #define RFSD_CALLBACK(name) NTSTATUS(* name )(ULONG BlockNumber, PVOID pContext) 45 #define RFSD_NAME_LEN 255 47 #define SUPER_BLOCK_OFFSET REISERFS_DISK_OFFSET_IN_BYTES 48 #define SUPER_BLOCK_SIZE sizeof(RFSD_SUPER_BLOCK) 50 #define RFSD_ROOT_PARENT_ID 1 51 #define RFSD_ROOT_OBJECT_ID 2 52 #define RFSD_IS_ROOT_KEY(x) (x.k_dir_id == RFSD_ROOT_PARENT_ID && x.k_objectid == RFSD_ROOT_OBJECT_ID) 53 #define RFSD_IS_PTR_TO_ROOT_KEY(x) (x->k_dir_id == RFSD_ROOT_PARENT_ID && x->k_objectid == RFSD_ROOT_OBJECT_ID) 58 #define RFSD_KEY_VERSION_1 0 59 #define RFSD_KEY_VERSION_2 1 60 #define RFSD_KEY_VERSION_UNKNOWN 7 63 #define RFSD_KEYS_MATCH 0 64 #define RFSD_KEY_SMALLER -1 65 #define RFSD_KEY_LARGER 1 68 #define RFSD_LEAF_BLOCK_LEVEL 1 76 #define DbgBreak() DbgPrint("rfsd: breakpoint requested.\n");DbgBreakPoint() 78 #define DbgBreak() DbgPrint("rfsd: breakpoint ignored.\n") 83 #define RFSD_VERSION "0.26" 91 #define RFSD_READ_ONLY TRUE 95 #define RFSD_UNLOAD TRUE 99 #define RFSD_POOL_TAG 'dsfR' 105 #define RFSD_BLOCK_TYPES (0x04) 107 #define MAXIMUM_RECORD_LENGTH (0x10000) 109 #define SECTOR_BITS (Vcb->SectorBits) 110 #define SECTOR_SIZE (Vcb->DiskGeometry.BytesPerSector) 111 #define DEFAULT_SECTOR_SIZE (0x200) 113 #define READ_AHEAD_GRANULARITY (0x10000) 115 #define SUPER_BLOCK (Vcb->SuperBlock) 117 #define BLOCK_SIZE (Vcb->BlockSize) 118 #define BLOCK_BITS (SUPER_BLOCK->s_log_block_size + 10) 120 #define INODES_COUNT (Vcb->SuperBlock->s_inodes_count) 122 #define INODES_PER_GROUP (SUPER_BLOCK->s_inodes_per_group) 123 #define BLOCKS_PER_GROUP (SUPER_BLOCK->s_blocks_per_group) 124 #define TOTAL_BLOCKS (SUPER_BLOCK->s_blocks_count) 126 #define RFSD_FIRST_DATA_BLOCK (SUPER_BLOCK->s_first_data_block) 130 #define CEILING_ALIGNED(A, B) (((A) + (B) - 1) & (~((B) - 1))) 135 #define __STR2__(x) #x 136 #define __STR1__(x) __STR2__(x) 137 #define __SLINE__ __STR1__(__LINE__) 142 #define DRIVER_NAME "Rfsd" 143 #define DEVICE_NAME L"\\Rfsd" 147 #define PARAMETERS_KEY L"\\Parameters" 149 #define WRITING_SUPPORT L"WritingSupport" 150 #define CHECKING_BITMAP L"CheckingBitmap" 151 #define EXT3_FORCEWRITING L"Ext3ForceWriting" 152 #define EXT3_CODEPAGE L"CodePage" 157 #define DOS_DEVICE_NAME L"\\DosDevices\\Rfsd" 162 #define IOCTL_PREPARE_TO_UNLOAD \ 163 CTL_CODE(FILE_DEVICE_UNKNOWN, 2048, METHOD_NEITHER, FILE_WRITE_ACCESS) 165 #endif // RFSD_UNLOAD 168 #define SetFlag(x,f) ((x) |= (f)) 172 #define ClearFlag(x,f) ((x) &= ~(f)) 175 #define IsFlagOn(a,b) ((BOOLEAN)(FlagOn(a,b) == b)) 177 #define RfsdRaiseStatus(IRPCONTEXT,STATUS) { \ 178 (IRPCONTEXT)->ExceptionCode = (STATUS); \ 179 ExRaiseStatus( (STATUS) ); \ 182 #define RfsdNormalizeAndRaiseStatus(IRPCONTEXT,STATUS) { \ 184 if ((STATUS) == STATUS_VERIFY_REQUIRED) { ExRaiseStatus((STATUS)); } \ 185 ExRaiseStatus(FsRtlNormalizeNtstatus((STATUS),STATUS_UNEXPECTED_IO_ERROR)); \ 192 #define FILE_WRITE_TO_END_OF_FILE 0xffffffff 193 #define FILE_USE_FILE_POINTER_POSITION 0xfffffffe 195 #define IsEndOfFile(Pos) ((Pos.LowPart == FILE_WRITE_TO_END_OF_FILE) && \ 196 (Pos.HighPart == FILE_USE_FILE_POINTER_POSITION )) 198 #define IsDirectory(Fcb) IsFlagOn(Fcb->RfsdMcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY) 204 #define RFSD_FILE_SYSTEM (FILE_SYSTEM) 206 #define RFSD_BUGCHK_BLOCK (0x00010000) 207 #define RFSD_BUGCHK_CLEANUP (0x00020000) 208 #define RFSD_BUGCHK_CLOSE (0x00030000) 209 #define RFSD_BUGCHK_CMCB (0x00040000) 210 #define RFSD_BUGCHK_CREATE (0x00050000) 211 #define RFSD_BUGCHK_DEBUG (0x00060000) 212 #define RFSD_BUGCHK_DEVCTL (0x00070000) 213 #define RFSD_BUGCHK_DIRCTL (0x00080000) 214 #define RFSD_BUGCHK_DISPATCH (0x00090000) 215 #define RFSD_BUGCHK_EXCEPT (0x000A0000) 216 #define RFSD_BUGCHK_RFSD (0x000B0000) 217 #define RFSD_BUGCHK_FASTIO (0x000C0000) 218 #define RFSD_BUGCHK_FILEINFO (0x000D0000) 219 #define RFSD_BUGCHK_FLUSH (0x000E0000) 220 #define RFSD_BUGCHK_FSCTL (0x000F0000) 221 #define RFSD_BUGCHK_INIT (0x00100000) 222 #define RFSD_BUGCHK_LOCK (0x0011000) 223 #define RFSD_BUGCHK_MEMORY (0x0012000) 224 #define RFSD_BUGCHK_MISC (0x0013000) 225 #define RFSD_BUGCHK_READ (0x00140000) 226 #define RFSD_BUGCHK_SHUTDOWN (0x00150000) 227 #define RFSD_BUGCHK_VOLINFO (0x00160000) 228 #define RFSD_BUGCHK_WRITE (0x00170000) 230 #define RFSD_BUGCHK_LAST (0x00170000) 232 #define RfsdBugCheck(A,B,C,D) { KeBugCheckEx(RFSD_FILE_SYSTEM, A | __LINE__, B, C, D ); } 237 #define RFSD_MIN_BLOCK 1024 238 #define RFSD_MIN_FRAG 1024 244 #define S_IFMT 0x0F000 245 #define S_IFSOCK 0x0C000 246 #define S_IFLNK 0x0A000 247 #define S_IFREG 0x08000 248 #define S_IFBLK 0x06000 249 #define S_IFDIR 0x04000 250 #define S_IFCHR 0x02000 251 #define S_IFIFO 0x01000 252 #define S_ISUID 0x00800 253 #define S_ISGID 0x00400 254 #define S_ISVTX 0x00200 256 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 257 #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 258 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 259 #define S_ISFIL(m) (((m) & S_IFMT) == S_IFFIL) 260 #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 261 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 262 #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 263 #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 265 #define S_IPERMISSION_MASK 0x1FF 267 #define S_IRWXU 0x1C0 268 #define S_IRUSR 0x100 269 #define S_IWUSR 0x080 270 #define S_IXUSR 0x040 272 #define S_IRWXG 0x038 273 #define S_IRGRP 0x020 274 #define S_IWGRP 0x010 275 #define S_IXGRP 0x008 277 #define S_IRWXO 0x007 278 #define S_IROTH 0x004 279 #define S_IWOTH 0x002 280 #define S_IXOTH 0x001 282 #define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO) 283 #define S_IALLUGO (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO) 284 #define S_IRUGO (S_IRUSR|S_IRGRP|S_IROTH) 285 #define S_IWUGO (S_IWUSR|S_IWGRP|S_IWOTH) 286 #define S_IXUGO (S_IXUSR|S_IXGRP|S_IXOTH) 288 #define S_ISREADABLE(m) (((m) & S_IPERMISSION_MASK) == (S_IRUSR | S_IRGRP | S_IROTH)) 289 #define S_ISWRITABLE(m) (((m) & S_IPERMISSION_MASK) == (S_IWUSR | S_IWGRP | S_IWOTH)) 291 #define RfsdSetReadable(m) (m) = ((m) | (S_IRUSR | S_IRGRP | S_IROTH)) 292 #define RfsdSetWritable(m) (m) = ((m) | (S_IWUSR | S_IWGRP | S_IWOTH)) 294 #define RfsdSetReadOnly(m) (m) = ((m) & (~(S_IWUSR | S_IWGRP | S_IWOTH))) 295 #define RfsdIsReadOnly(m) (!((m) & (S_IWUSR | S_IWGRP | S_IWOTH))) 301 #define I_DIRTY_SYNC 1 302 #define I_DIRTY_DATASYNC 2 303 #define I_DIRTY_PAGES 4 308 #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES) 341 #define NodeType(Ptr) (*((RFSD_IDENTIFIER_TYPE *)(Ptr))) 352 #define RFSD_REPINNED_BCBS_ARRAY_SIZE (8) 374 #define CODEPAGE_MAXLEN 0x20 442 #define PAGE_TABLE RfsdGlobal->CodePage.PageTable 447 #define RFSD_UNLOAD_PENDING 0x00000001 448 #define RFSD_SUPPORT_WRITING 0x00000002 449 #define EXT3_FORCE_WRITING 0x00000004 450 #define RFSD_CHECKING_BITMAP 0x00000008 583 #define VCB_INITIALIZED 0x00000001 584 #define VCB_VOLUME_LOCKED 0x00000002 585 #define VCB_MOUNTED 0x00000004 586 #define VCB_DISMOUNT_PENDING 0x00000008 587 #define VCB_READ_ONLY 0x00000010 589 #define VCB_WRITE_PROTECTED 0x10000000 590 #define VCB_FLOPPY_DISK 0x20000000 591 #define VCB_REMOVAL_PREVENTED 0x40000000 592 #define VCB_REMOVABLE_MEDIA 0x80000000 595 #define IsMounted(Vcb) (IsFlagOn(Vcb->Flags, VCB_MOUNTED)) 665 #define FCB_FROM_POOL 0x00000001 666 #define FCB_PAGE_FILE 0x00000002 667 #define FCB_DELETE_ON_CLOSE 0x00000004 668 #define FCB_DELETE_PENDING 0x00000008 669 #define FCB_FILE_DELETED 0x00000010 670 #define FCB_FILE_MODIFIED 0x00000020 712 #define MCB_FROM_POOL 0x00000001 713 #define MCB_IN_TREE 0x00000002 714 #define MCB_IN_USE 0x00000004 716 #define IsMcbUsed(Mcb) IsFlagOn(Mcb->Flags, MCB_IN_USE) 743 #define CCB_FROM_POOL 0x00000001 745 #define CCB_ALLOW_EXTENDED_DASD_IO 0x80000000 800 #define IRP_CONTEXT_FLAG_FROM_POOL (0x00000001) 801 #define IRP_CONTEXT_FLAG_WAIT (0x00000002) 802 #define IRP_CONTEXT_FLAG_WRITE_THROUGH (0x00000004) 803 #define IRP_CONTEXT_FLAG_FLOPPY (0x00000008) 804 #define IRP_CONTEXT_FLAG_RECURSIVE_CALL (0x00000010) 805 #define IRP_CONTEXT_FLAG_DISABLE_POPUPS (0x00000020) 806 #define IRP_CONTEXT_FLAG_DEFERRED (0x00000040) 807 #define IRP_CONTEXT_FLAG_VERIFY_READ (0x00000080) 808 #define IRP_CONTEXT_STACK_IO_CONTEXT (0x00000100) 809 #define IRP_CONTEXT_FLAG_REQUEUED (0x00000200) 810 #define IRP_CONTEXT_FLAG_USER_IO (0x00000400) 811 #define IRP_CONTEXT_FLAG_DELAY_CLOSE (0x00000800) 849 #define CanRfsdWait(IRP) IoIsOperationSynchronous(Irp) 852 #define max(a,b) (((a) > (b)) ? (a) : (b)) 856 #define min(a,b) (((a) < (b)) ? (a) : (b)) 1060 #define RfsdPrint(arg) RfsdPrintf arg 1061 #define RfsdPrintNoIndent(arg) RfsdNIPrintf arg 1063 #define RfsdCompleteRequest(Irp, bPrint, PriorityBoost) \ 1064 RfsdDbgPrintComplete(Irp, bPrint); \ 1065 IoCompleteRequest(Irp, PriorityBoost) 1069 #define RfsdPrint(arg) 1070 #define RfsdPrintNoIndent(arg) 1072 #define RfsdCompleteRequest(Irp, bPrint, PriorityBoost) \ 1073 IoCompleteRequest(Irp, PriorityBoost) 1080 LONG DebugPrintLevel,
1088 LONG DebugPrintLevel,
1095 #define RfsdGetCurrentProcessName() ( \ 1096 (PUCHAR) PsGetCurrentProcess() + ProcessNameOffset \ DISK_GEOMETRY DiskGeometry
struct _RFSD_CCB * PRFSD_CCB
CACHE_MANAGER_CALLBACKS CacheManagerCallbacks
NTSTATUS RfsdDiskIoControl(IN PDEVICE_OBJECT DeviceOjbect, IN ULONG IoctlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, IN OUT PVOID OutputBuffer, IN OUT PULONG OutputBufferSize)
NTSTATUS RfsdExceptionHandler(IN PRFSD_IRP_CONTEXT IrpContext)
PBCB Bcb[RFSD_REPINNED_BCBS_ARRAY_SIZE]
NTSTATUS RfsdUnicodeToOEM(IN OUT POEM_STRING Oem, IN PUNICODE_STRING Unicode)
void FillInMemoryKey(IN PRFSD_KEY_ON_DISK pKeyOnDisk, IN RFSD_KEY_VERSION KeyVersion, IN OUT PRFSD_KEY_IN_MEMORY pKeyInMemory)
NTSTATUS RfsdFreeBlock(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, ULONG Block)
NTSTATUS RfsdUnlockVcb(IN PRFSD_VCB Vcb, IN PFILE_OBJECT FileObject)
NTSTATUS RfsdAddEntry(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Dcb, IN ULONG FileType, IN ULONG Inode, IN PUNICODE_STRING FileName)
NTSTATUS RfsdExpandFile(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb, PLARGE_INTEGER AllocationSize)
NTSTATUS RfsdCompleteIrpContext(IN PRFSD_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
struct _RFSD_GLOBAL * PRFSD_GLOBAL
VOID RfsdRefreshMcb(PRFSD_VCB Vcb, PRFSD_MCB Mcb)
BOOLEAN NTAPI RfsdFastIoRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS RfsdReadDisk(IN PRFSD_VCB Vcb, IN ULONGLONG Offset, IN ULONG Size, IN PVOID Buffer, IN BOOLEAN bVerify)
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG _In_ ULONG _In_ ULONG Length
IN PVCB IN VBO IN ULONG OUT PBCB * Bcb
NTSTATUS RfsdDiskShutDown(PRFSD_VCB Vcb)
struct _RFSD_BDL RFSD_BDL
#define IRP_MJ_FLUSH_BUFFERS
#define __drv_mustHoldCriticalRegion
__drv_mustHoldCriticalRegion NTSTATUS RfsdIsVolumeMounted(IN PRFSD_IRP_CONTEXT IrpContext)
SECTION_OBJECT_POINTERS SectionObject
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
FSRTL_COMMON_FCB_HEADER Header
NTSTATUS RfsdClose(IN PRFSD_IRP_CONTEXT IrpContext)
struct _RFSD_IDENTIFIER RFSD_IDENTIFIER
NTSTATUS RfsdSetParentEntry(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Dcb, IN ULONG OldParent, IN ULONG NewParent)
PDEVICE_OBJECT DeviceObject
NTSTATUS RfsdSupersedeOrOverWriteFile(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb, IN ULONG Disposition)
RFSD_IDENTIFIER Identifier
NTSTATUS RfsdFindItemHeaderInBlock(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY pKey, IN PUCHAR pBlockBuffer, OUT PRFSD_ITEM_HEAD *ppTargetItemHeader, IN RFSD_KEY_COMPARISON(*fpComparisonFunction)(PRFSD_KEY_IN_MEMORY, PRFSD_KEY_IN_MEMORY))
BOOLEAN NTAPI RfsdAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
VOID RfsdNotifyReportChange(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb, IN ULONG Filter, IN ULONG Action)
VOID RfsdFreeFcb(IN PRFSD_FCB Fcb)
BOOLEAN RfsdSaveBuffer(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN LONGLONG Offset, IN ULONG Size, IN PVOID Buf)
NTSTATUS RfsdReadWriteBlocks(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_BDL RfsdBDL, IN ULONG Length, IN ULONG Count, IN BOOLEAN bVerify)
_In_ WDFDPC _In_ BOOLEAN Wait
NTSTATUS RfsdSetVolumeInformation(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdLookupFileName(IN PRFSD_VCB Vcb, IN PUNICODE_STRING FullFileName, IN PRFSD_MCB ParentMcb, OUT PRFSD_MCB *RfsdMcb, IN OUT PRFSD_INODE Inode)
PDEVICE_OBJECT RealDevice
VOID RfsdSetVpbFlag(IN PVPB Vpb, IN USHORT Flag)
NPAGED_LOOKASIDE_LIST RfsdIrpContextLookasideList
BOOLEAN RfsdAddMcbEntry(IN PRFSD_VCB Vcb, IN LONGLONG Lba, IN LONGLONG Length)
BOOLEAN NTAPI RfsdFastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
struct item_head * PRFSD_ITEM_HEAD
BOOLEAN NTAPI RfsdNoOpAcquire(IN PVOID Fcb, IN BOOLEAN Wait)
BOOLEAN RfsdIsHandleCountZero(IN PRFSD_VCB Vcb)
PUCHAR RfsdAllocateAndLoadBlock(IN PRFSD_VCB Vcb, IN ULONG BlockIndex)
#define IRP_MJ_SET_VOLUME_INFORMATION
PRFSD_SUPER_BLOCK SuperBlock
BOOLEAN RfsdLookupMcbEntry(IN PRFSD_VCB Vcb, IN LONGLONG Offset, OUT PLONGLONG Lba OPTIONAL, OUT PLONGLONG Length OPTIONAL, OUT PLONGLONG RunStart OPTIONAL, OUT PLONGLONG RunLength OPTIONAL, OUT PULONG Index OPTIONAL)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID RfsdFreeIrpContext(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdFlushVolume(IN PRFSD_VCB Vcb, BOOLEAN bShutDown)
VOID NTAPI RfsdReleaseFromLazyWrite(IN PVOID Context)
BOOLEAN RfsdDeleteMcbNode(PRFSD_VCB Vcb, PRFSD_MCB McbTree, PRFSD_MCB RfsdMcb)
VOID __cdecl RfsdPrintf(LONG DebugPrintLevel, PCHAR DebugMessage,...)
NTSTATUS RfsdSetInformation(IN PRFSD_IRP_CONTEXT IrpContext)
RFSD_IDENTIFIER Identifier
enum _RFSD_IDENTIFIER_TYPE RFSD_IDENTIFIER_TYPE
struct nls_table * PageTable
NTSTATUS RfsdFlushFiles(IN PRFSD_VCB Vcb, BOOLEAN bShutDown)
PAGED_LOOKASIDE_LIST RfsdMcbLookasideList
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
NTSTATUS RfsdFlushFile(IN PRFSD_FCB Fcb)
NTSTATUS RfsdQueueRequest(IN PRFSD_IRP_CONTEXT IrpContext)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
BOOLEAN RfsdZeroHoles(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PFILE_OBJECT FileObject, IN LONGLONG Offset, IN LONGLONG Count)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG IoctlCode
ULONG RfsdOEMToUnicodeSize(IN PANSI_STRING Oem)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpSurpriseRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
NTSTATUS RfsdLoadItem(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY pItemKey, OUT PRFSD_ITEM_HEAD *ppMatchingItemHeader, OUT PUCHAR *ppItemBuffer, OUT PUCHAR *ppBlockBuffer, OUT PULONG pBlockNumber, IN RFSD_KEY_COMPARISON(*fpComparisonFunction)(PRFSD_KEY_IN_MEMORY, PRFSD_KEY_IN_MEMORY))
BOOLEAN RfsdSaveGroup(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG Group)
NTSTATUS RfsdSetRenameInfo(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb)
NTSTATUS RfsdExpandInode(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb, ULONG *dwRet)
UNICODE_STRING DirectorySearchPattern
#define RFSD_CALLBACK(name)
NTSTATUS RfsdBuildBDL(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY InodeNo, IN PRFSD_INODE Inode, IN ULONGLONG Offset, IN ULONG Size, IN BOOLEAN bAlloc, OUT PRFSD_BDL *Bdls, OUT PULONG Count)
NTSTATUS RfsdNewInode(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, ULONG GroupHint, ULONG mode, PULONG Inode)
NTSTATUS RfsdParseFilesystemTree(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY Key, IN ULONG StartingBlockNumber, IN RFSD_CALLBACK(fpDirectoryCallback), IN PVOID Context)
struct reiserfs_key * PRFSD_KEY_ON_DISK
BOOLEAN SuperblockContainsMagicKey(PRFSD_SUPER_BLOCK sb)
NTSTATUS RfsdRead(IN PRFSD_IRP_CONTEXT IrpContext)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
__drv_mustHoldCriticalRegion NTSTATUS RfsdDismountVolume(IN PRFSD_IRP_CONTEXT IrpContext)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
ULONG RfsdGetInfoLength(IN FILE_INFORMATION_CLASS FileInformationClass)
VOID __cdecl RfsdNIPrintf(LONG DebugPrintLevel, PCHAR DebugMessage,...)
struct _RFSD_GLOBAL RFSD_GLOBAL
PDEVICE_OBJECT DeviceObject
VOID RfsdRepinBcb(IN PRFSD_IRP_CONTEXT IrpContext, IN PBCB Bcb)
struct reiserfs_de_head * PRFSD_DENTRY_HEAD
PUCHAR RfsdNtStatusToString(IN NTSTATUS Status)
NTSTATUS RfsdDispatchRequest(IN PRFSD_IRP_CONTEXT IrpContext)
BOOLEAN RfsdLoadInode2(IN PRFSD_VCB Vcb, IN __u32 a, IN __u32 b, IN OUT PRFSD_INODE Inode)
NTSTATUS RfsdLockVolume(IN PRFSD_IRP_CONTEXT IrpContext)
BOOLEAN RfsdCheckSetBlock(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, ULONG Block)
__GNU_EXTENSION typedef __int64 * PLONGLONG
LARGE_INTEGER RfsdSysTime(IN ULONG i_time)
_In_ PDEVICE_OBJECT DeviceObject
struct _RFSD_FCB * PRFSD_FCB
BOOLEAN RfsdSaveSuper(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb)
NTSTATUS RfsdMountVolume(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdVerifyVolume(IN PRFSD_IRP_CONTEXT IrpContext)
ERESOURCE PagingIoResource
struct _RFSD_FCBVCB RFSD_FCBVCB
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPurgeFile(IN PRFSD_FCB Fcb, IN BOOLEAN FlushBeforePurge)
RFSD_KEY_COMPARISON CompareShortKeys(IN PRFSD_KEY_IN_MEMORY a, IN PRFSD_KEY_IN_MEMORY b)
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
struct _RFSD_FCB RFSD_FCB
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFDEVICE Child
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
PRFSD_FCB RfsdSearchFcbList(IN PRFSD_VCB Vcb, IN ULONG inode)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN FailImmediately
VOID NTAPI RfsdDeQueueCloseRequest(IN PVOID Context)
struct _RFSD_BDL * PRFSD_BDL
IO_STACK_LOCATION EXTENDED_IO_STACK_LOCATION
BOOLEAN NTAPI RfsdFastIoUnlockAll(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
struct stat_data * PRFSD_INODE
NTSTATUS RfsdInitializeVcb(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_SUPER_BLOCK RfsdSb, PDEVICE_OBJECT TargetDevice, PDEVICE_OBJECT VolumeDevice, PVPB Vpb)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPurgeVolume(IN PRFSD_VCB Vcb, IN BOOLEAN FlushBeforePurge)
VOID RfsdFreeVcb(IN PRFSD_VCB Vcb)
NTSTATUS RfsdQueryVolumeInformation(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS _NavigateToLeafNode(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY Key, IN ULONG StartingBlockNumber, OUT PULONG out_NextBlockNumber, IN BOOLEAN ReturnOnFirstMatch, IN RFSD_KEY_COMPARISON(*fpComparisonFunction)(PRFSD_KEY_IN_MEMORY, PRFSD_KEY_IN_MEMORY), RFSD_CALLBACK(fpDirectoryCallback), IN PVOID pContext)
NTSTATUS RfsdGetBlock(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG dwContent, IN ULONG Index, IN ULONG Layer, IN BOOLEAN bAlloc, OUT PULONG pBlock)
NTSTATUS RfsdExceptionFilter(IN PRFSD_IRP_CONTEXT IrpContext, IN PEXCEPTION_POINTERS ExceptionPointer)
SECTION_OBJECT_POINTERS SectionObject
ULONG RfsdGetProcessNameOffset(VOID)
NTSTATUS RfsdTruncateInode(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb)
NTSTATUS RfsdBuildBDL2(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY pKey, IN PRFSD_INODE pInode, OUT PULONG out_Count, OUT PRFSD_BDL *out_ppBdl)
struct _RFSD_REPINNED_BCBS RFSD_REPINNED_BCBS
RFSD_IDENTIFIER_TYPE Type
BOOLEAN RfsdIsDirectoryEmpty(IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb)
NTSTATUS RfsdCreateVolume(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb)
NTSTATUS RfsdReadInode(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY Key, IN PRFSD_INODE Inode, IN ULONGLONG Offset, IN PVOID Buffer, IN ULONG Size, OUT PULONG dwReturn)
NTSTATUS RfsdAllowExtendedDasdIo(IN PRFSD_IRP_CONTEXT IrpContext)
struct _RFSD_ALLOC_HEADER * PRFSD_ALLOC_HEADER
BOOLEAN NTAPI RfsdFastIoUnlockSingle(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NPAGED_LOOKASIDE_LIST RfsdCcbLookasideList
struct _RFSD_VCB RFSD_VCB
struct disk_child * PRFSD_DISK_NODE_REF
VOID RfsdRemoveVcb(PRFSD_VCB Vcb)
PDEVICE_OBJECT TargetDeviceObject
#define IRP_MJ_QUERY_VOLUME_INFORMATION
#define IRP_MJ_DIRECTORY_CONTROL
RFSD_IDENTIFIER Identifier
NTSTATUS RfsdShutDown(IN PRFSD_IRP_CONTEXT IrpContext)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
FAST_IO_DISPATCH FastIoDispatch
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
NTSTATUS RfsdWriteInode(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG InodeNo, IN PRFSD_INODE Inode, IN ULONGLONG Offset, IN PVOID Buffer, IN ULONG Size, IN BOOLEAN bWriteToDisk, OUT PULONG dwReturn)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
RFSD_REPINNED_BCBS Repinned
VOID RfsdUnpinRepinnedBcbs(IN PRFSD_IRP_CONTEXT IrpContext)
struct _RFSD_VCB * PRFSD_VCB
GLenum GLuint GLint GLint layer
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnp(IN PRFSD_IRP_CONTEXT IrpContext)
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
PRFSD_MCB RfsdAllocateMcb(PRFSD_VCB, PUNICODE_STRING FileName, ULONG FileAttr)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
GLboolean GLboolean GLboolean b
struct RFSDFS_EXT * PRFSDFS_EXT
ULONG RfsdLog2(ULONG Value)
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
BOOLEAN RfsdCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus)
NTSTATUS RfsdDirectoryControl(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdBlockMap(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG InodeNo, IN PRFSD_INODE Inode, IN ULONG Index, IN BOOLEAN bAlloc, OUT PULONG pBlock)
PDRIVER_OBJECT DriverObject
PRFSD_SUPER_BLOCK RfsdLoadSuper(IN PRFSD_VCB Vcb, IN BOOLEAN bVerify)
VOID RfsdDbgPrintCall(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
_In_ WDFCOLLECTION _In_ ULONG Index
NTSTATUS RfsdDeleteFile(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb)
#define IRP_MJ_FILE_SYSTEM_CONTROL
NTSTATUS RfsdScanDir(IN PRFSD_VCB Vcb, IN PRFSD_MCB ParentMcb, IN PUNICODE_STRING FileName, IN OUT PULONG Index, IN OUT PRFSD_DENTRY_HEAD rfsd_dir)
BOOLEAN NTAPI RfsdFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
WORK_QUEUE_ITEM WorkQueueItem
NTSTATUS RfsdUnlockVolume(IN PRFSD_IRP_CONTEXT IrpContext)
BOOLEAN RfsdLoadGroup(IN PRFSD_VCB Vcb)
PRFSD_MCB RfsdSearchMcbTree(PRFSD_VCB Vcb, PRFSD_MCB RfsdMcb, PRFSD_KEY_IN_MEMORY Key)
BOOLEAN RfsdGetInodeLba(IN PRFSD_VCB Vcb, IN __u32 DirectoryID, IN __u32 ParentID, OUT PLONGLONG offset)
BOOLEAN RfsdSaveInode(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG inode, IN PRFSD_INODE Inode)
RFSD_IDENTIFIER Identifier
VOID RfsdQueueCloseRequest(IN PRFSD_IRP_CONTEXT IrpContext)
ULONG RfsdUnicodeToOEMSize(IN PUNICODE_STRING Unicode)
UCHAR AnsiName[CODEPAGE_MAXLEN]
PDEVICE_OBJECT DeviceObject
NTSTATUS RfsdLockVcb(IN PRFSD_VCB Vcb, IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI RfsdAcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait)
VOID RfsdFreeMcb(IN PRFSD_MCB Mcb)
VOID NTAPI RfsdDeQueueRequest(IN PVOID Context)
struct _RFSD_FCBVCB * PRFSD_FCBVCB
struct reiserfs_cpu_key * PRFSD_KEY_IN_MEMORY
VOID NTAPI DriverUnload(IN PDRIVER_OBJECT DriverObject)
ULONG RfsdInodeTime(IN LARGE_INTEGER SysTime)
FSRTL_COMMON_FCB_HEADER CommonFCBHeader
CACHE_MANAGER_CALLBACKS CacheManagerNoOpCallbacks
PRFSD_FCB RfsdCreateFcbFromMcb(PRFSD_VCB Vcb, PRFSD_MCB Mcb)
BOOLEAN RfsdQueryParameters(IN PUNICODE_STRING RegistryPath)
BOOLEAN RfsdSaveBlock(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN ULONG dwBlk, IN PVOID Buf)
NTSTATUS RfsdReadSync(IN PRFSD_VCB Vcb, IN ULONGLONG Offset, IN ULONG Length, OUT PVOID Buffer, IN BOOLEAN bVerify)
PRFSD_MCB RfsdSearchMcb(PRFSD_VCB Vcb, PRFSD_MCB Parent, PUNICODE_STRING FileName)
BOOLEAN NTAPI RfsdFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
ULONG dwData[RFSD_BLOCK_TYPES]
WCHAR UniName[CODEPAGE_MAXLEN]
struct _RFSD_IDENTIFIER * PRFSD_IDENTIFIER
VOID RfsdMediaEjectControl(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN BOOLEAN bPrevent)
struct _RFSD_REPINNED_BCBS * PRFSD_REPINNED_BCBS
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTSTATUS RfsdCreate(IN PRFSD_IRP_CONTEXT IrpContext)
PARTITION_INFORMATION PartitionInformation
VOID NTAPI RfsdReleaseFromReadAhead(IN PVOID Context)
NTSTATUS RfsdFlush(IN PRFSD_IRP_CONTEXT IrpContext)
ULONG RfsdProcessDirEntry(IN PRFSD_VCB Vcb, IN FILE_INFORMATION_CLASS FileInformationClass, IN __u32 Key_ParentID, IN __u32 Key_ObjectID, IN PVOID Buffer, IN ULONG UsedLength, IN ULONG Length, IN ULONG FileIndex, IN PUNICODE_STRING pName, IN BOOLEAN Single, IN PVOID pPreviousEntry)
struct _FCB_LIST_ENTRY * PFCB_LIST_ENTRY
DRIVER_DISPATCH(nfs41_FsdDispatch)
struct _RFSD_IRP_CONTEXT * PRFSD_IRP_CONTEXT
NTSTATUS RfsdCreateFile(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb)
BOOLEAN RfsdLoadInode(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY pKey, IN OUT PRFSD_INODE Inode)
struct _RFSD_MCB * PRFSD_MCB
BOOLEAN ExceptionInProgress
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpCancelRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
NTSTATUS RfsdNotifyChangeDirectory(IN PRFSD_IRP_CONTEXT IrpContext)
_In_ ULONG _In_ ULONG Offset
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
struct _FCB_LIST_ENTRY FCB_LIST_ENTRY
VOID RfsdDbgPrintComplete(IN PIRP Irp, IN BOOLEAN bPrint)
SECTION_OBJECT_POINTERS SectionObject
NTSTATUS NTAPI RfsdBuildRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
BOOLEAN NTAPI RfsdFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN BOOLEAN CheckForReadOperation, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS RfsdUserFsRequest(IN PRFSD_IRP_CONTEXT IrpContext)
DRIVER_INITIALIZE DriverEntry
struct reiserfs_super_block_v1 * PRFSD_SUPER_BLOCK
BOOLEAN NTAPI RfsdFastIoLock(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN PEPROCESS Process, IN ULONG Key, IN BOOLEAN FailImmediately, IN BOOLEAN ExclusiveLock, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSTATUS RfsdExpandBlock(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb, ULONG dwContent, ULONG Index, ULONG layer, BOOLEAN bNew, ULONG *dwRet)
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
enum _LOCK_OPERATION LOCK_OPERATION
VOID NTAPI RfsdNoOpRelease(IN PVOID Fcb)
NTSTATUS RfsdTruncateFile(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb, PLARGE_INTEGER AllocationSize)
_In_ WDFIOTARGET _In_ _Strict_type_match_ WDF_IO_TARGET_SENT_IO_ACTION Action
NTSTATUS RfsdPrepareToUnload(IN PRFSD_IRP_CONTEXT IrpContext)
RFSD_IDENTIFIER Identifier
_In_ PFCB _In_ LONGLONG FileOffset
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
NTSTATUS RfsdDeviceControl(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdDeviceControlNormal(IN PRFSD_IRP_CONTEXT IrpContext)
RFSD_KEY_COMPARISON CompareKeysWithoutOffset(IN PRFSD_KEY_IN_MEMORY a, IN PRFSD_KEY_IN_MEMORY b)
NTSTATUS RfsdLockUserBuffer(IN PIRP Irp, IN ULONG Length, IN LOCK_OPERATION Operation)
NTSTATUS RfsdRemoveEntry(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Dcb, IN ULONG FileType, IN ULONG Inode)
__drv_mustHoldCriticalRegion NTSTATUS RfsdPnpQueryRemove(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
__u32 ConvertKeyTypeUniqueness(__u32 k_uniqueness)
NTSTATUS RfsdOEMToUnicode(IN OUT PUNICODE_STRING Oem, IN POEM_STRING Unicode)
FSRTL_COMMON_FCB_HEADER Header
NTSTATUS RfsdCleanup(IN PRFSD_IRP_CONTEXT IrpContext)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ULONG BOOLEAN BOOLEAN ExclusiveLock
short RFSD_KEY_COMPARISON
#define IRP_MJ_LOCK_CONTROL
PVOID RfsdGetUserBuffer(IN PIRP Irp)
NTSTATUS RfsdQueryInformation(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdTruncateBlock(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB Fcb, IN ULONG dwContent, IN ULONG Index, IN ULONG layer, OUT BOOLEAN *bFreed)
NPAGED_LOOKASIDE_LIST RfsdFcbLookasideList
static USHORT RfsdStringLength(PUCHAR buffer, USHORT MaximumLength)
struct block_head * PRFSD_BLOCK_HEAD
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
BOOLEAN NTAPI RfsdFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, IN PEPROCESS Process, IN ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID RfsdRemoveMcbEntry(IN PRFSD_VCB Vcb, IN LONGLONG Lba, IN LONGLONG Length)
VOID RfsdAddMcbNode(PRFSD_VCB Vcb, PRFSD_MCB Parent, PRFSD_MCB Child)
struct _RFSD_REPINNED_BCBS * Next
ERESOURCE PagingIoResource
ERESOURCE PagingIoResource
NTSTATUS RfsdFileSystemControl(IN PRFSD_IRP_CONTEXT IrpContext)
PRFSD_FCB RfsdAllocateFcb(IN PRFSD_VCB Vcb, IN PRFSD_MCB RfsdMcb, IN PRFSD_INODE Inode)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define IRP_MJ_SET_INFORMATION
RFSD_KEY_COMPARISON CompareKeys(IN PRFSD_KEY_IN_MEMORY a, IN PRFSD_KEY_IN_MEMORY b)
ULONG OpenFileHandleCount
VOID RfsdFreeCcb(IN PRFSD_CCB Ccb)
PDEVICE_OBJECT RealDevice
PRFSD_CCB RfsdAllocateCcb(VOID)
_In_ FLT_SET_CONTEXT_OPERATION Operation
RFSD_KEY_VERSION DetermineOnDiskKeyFormat(const PRFSD_KEY_ON_DISK key)
struct _RFSD_CCB RFSD_CCB
BOOLEAN RfsdCheckBitmapConsistency(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb)
VOID RfsdClearVpbFlag(IN PVPB Vpb, IN USHORT Flag)
NTSTATUS NavigateToLeafNode(IN PRFSD_VCB Vcb, IN PRFSD_KEY_IN_MEMORY Key, IN ULONG StartingBlockNumber, OUT PULONG out_NextBlockNumber)
struct _RFSD_GLOBAL::@768 CodePage
#define IRP_MJ_QUERY_INFORMATION
NTSTATUS RfsdCreateInode(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN PRFSD_FCB pParentFcb, IN ULONG Type, IN ULONG FileAttr, IN PUNICODE_STRING FileName)
struct _RFSD_IRP_CONTEXT RFSD_IRP_CONTEXT
RFSD_IDENTIFIER Identifier
IO_STACK_LOCATION * PEXTENDED_IO_STACK_LOCATION
BOOLEAN RfsdCheckDismount(IN PRFSD_IRP_CONTEXT IrpContext, IN PRFSD_VCB Vcb, IN BOOLEAN bForce)
ULONG dwMeta[RFSD_BLOCK_TYPES]
GLboolean GLboolean GLboolean GLboolean a
NTSTATUS RfsdNewBlock(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, ULONG GroupHint, ULONG BlockHint, PULONG dwRet)
PRFSD_IRP_CONTEXT RfsdAllocateIrpContext(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID RfsdInsertVcb(PRFSD_VCB Vcb)
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB * Dcb
NTSTATUS RfsdQueryDirectory(IN PRFSD_IRP_CONTEXT IrpContext)
VOID RfsdFreeMcbTree(PRFSD_MCB McbTree)
struct _RFSD_ALLOC_HEADER RFSD_ALLOC_HEADER
RFSD_IDENTIFIER Identifier
NTSTATUS RfsdWrite(IN PRFSD_IRP_CONTEXT IrpContext)
#define RFSD_REPINNED_BCBS_ARRAY_SIZE
IN OUT PVCB IN PDEVICE_OBJECT IN PVPB Vpb
NTSTATUS RfsdLockControl(IN PRFSD_IRP_CONTEXT IrpContext)
NTSTATUS RfsdSetDispositionInfo(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, PRFSD_FCB Fcb, BOOLEAN bDelete)
BOOLEAN RfsdFreeInode(PRFSD_IRP_CONTEXT IrpContext, PRFSD_VCB Vcb, ULONG Inode, ULONG Type)
BOOLEAN RfsdLoadBlock(IN PRFSD_VCB Vcb, IN ULONG dwBlk, IN PVOID Buffer)
BOOLEAN RfsdGetFullFileName(PRFSD_MCB Mcb, PUNICODE_STRING FileName)
BOOLEAN NTAPI RfsdFastIoWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID RfsdSyncUninitializeCacheMap(IN PFILE_OBJECT FileObject)
__drv_dispatchType(IRP_MJ_CREATE) __drv_dispatchType(IRP_MJ_CLEANUP) __drv_dispatchType(IRP_MJ_CLOSE) DRIVER_DISPATCH FxLibraryDispatch
#define IRP_MJ_DEVICE_CONTROL
VOID RfsdStartFloppyFlushDpc(PRFSD_VCB Vcb, PRFSD_FCB Fcb, PFILE_OBJECT FileObject)
PULONG MinorVersion OPTIONAL