22#pragma alloc_text(PAGE, Ext2IsNameValid)
23#pragma alloc_text(PAGE, Ext2FollowLink)
24#pragma alloc_text(PAGE, Ext2IsSpecialSystemFile)
25#pragma alloc_text(PAGE, Ext2LookupFile)
26#pragma alloc_text(PAGE, Ext2ScanDir)
27#pragma alloc_text(PAGE, Ext2CreateFile)
28#pragma alloc_text(PAGE, Ext2CreateVolume)
29#pragma alloc_text(PAGE, Ext2Create)
30#pragma alloc_text(PAGE, Ext2CreateInode)
31#pragma alloc_text(PAGE, Ext2SupersedeOrOverWriteFile)
92 IoGetRemainingStackSize() < 1024) {
97 if (!
Mcb->Inode.i_blocks) {
229 PWSTR SpecialFileList[] = {
236 PWSTR SpecialDirList[] = {
250 entryName = SpecialDirList[
i];
252 entryName = SpecialFileList[
i];
255 if (
NULL == entryName) {
347 if ( (End == 0) || (End == 1 &&
365 while (i < End && FullName->
Buffer[
i] ==
L'\\')
i++;
407 Mcb->Refercount == 1) {
452 Mcb->de->d_inode = &
Mcb->Inode;
453 Mcb->Inode.i_ino = Inode;
454 Mcb->Inode.i_sb = &
Vcb->sb;
499 if (
S_ISLNK(
Mcb->Inode.i_mode) && !bNotFollow) {
614 DEBUG(
DL_ERR, (
"Ex2ScanDir: failed to allocate dentry.\n"));
669 set_buffer_dirty(bh);
701 ULONG EaBufferLength;
743 DbgPrint(
"ext4_fs_get_xattr_ref() failed!\n");
747 XattrRefAcquired =
TRUE;
761 (
PCHAR)FullEa + FullEa->NextEntryOffset)) {
765 EaName.MaximumLength = EaName.Length = FullEa->EaNameLength;
766 EaName.Buffer = &FullEa->EaName[0];
780 (
PCHAR)FullEa + FullEa->NextEntryOffset)) {
785 EaName.MaximumLength = EaName.Length = FullEa->EaNameLength;
786 EaName.Buffer = &FullEa->EaName[0];
793 &FullEa->EaName[0] + FullEa->EaNameLength + 1,
794 FullEa->EaValueLength,
805 &FullEa->EaName[0] + FullEa->EaNameLength + 1,
806 FullEa->EaValueLength,
816 if (XattrRefAcquired) {
865 BOOLEAN NoIntermediateBuffering;
956 DEBUG(
DL_ERR, (
"Ex2CreateFile: failed to allocate FileName.\n"));
999 DEBUG(
DL_INF, (
"Ext2CreateFile: %wZ Paging=%d Option: %xh:"
1000 "Dir=%d NonDir=%d OpenTarget=%d NC=%d DeleteOnClose=%d\n",
1005 DEBUG(
DL_RES, (
"Ext2CreateFile: Lookup 1st: %wZ at %S\n",
1036 while (PathName.
Length > 0 &&
1044 if (PathName.
Buffer[0] !=
L'\\') {
1048 ParentMcb =
Vcb->McbTree;
1057 if (((RemainName.
Length != 0) && (RemainName.
Buffer[0] ==
L'\\')) ||
1063 if (RemainName.
Length != 0) {
1067 DEBUG(
DL_RES, (
"Ext2CreateFile: Lookup 2nd: %wZ\\%wZ\n",
1092 PathName = RemainName;
1098 ParentMcb = ParentMcb->
Target;
1112 if (!bFcbLockAcquired) {
1114 bFcbLockAcquired =
TRUE;
1125 bParentFcbCreated =
TRUE;
1129 if (bFcbLockAcquired) {
1131 bFcbLockAcquired =
FALSE;
1152 Vcb->Vpb->RealDevice );
1158 if (TemporaryFile) {
1186 DEBUG(
DL_RES, (
"Ext2CreateFile: Confirm creation: %wZ\\%wZ\n",
1201 }
else if (OpenTargetDirectory) {
1237 if (OpenTargetDirectory) {
1247 while (
i > 0 && RealName.
Buffer[
i - 1] !=
L'\\')
1292 if (NonDirectoryFile) {
1300 if (OpenTargetDirectory) {
1322 if (!bFcbLockAcquired) {
1324 bFcbLockAcquired =
TRUE;
1335 if (OpenReparsePoint) {
1375 bFcbAllocated =
TRUE;
1397 bFcbLockAcquired =
FALSE;
1402 bMainResourceAcquired =
TRUE;
1481 Irp->Overlay.AllocationSize.QuadPart;
1483 if (
Fcb->
Header.AllocationSize.QuadPart > 0) {
1491 Fcb->
Header.AllocationSize.QuadPart = 0;
1517 Vcb->Vpb->RealDevice );
1534 if (
Fcb->SectionObject.DataSectionObject !=
NULL) {
1565 if (!bFcbAllocated) {
1617 Ccb->filp.f_dentry = SymLink->
de;
1621 Ccb->filp.f_version =
Fcb->
Mcb->Inode.i_version;
1626 if (NoIntermediateBuffering) {
1627 Fcb->NonCachedOpenCount++;
1642 DEBUG(
DL_INF, (
"Ext2CreateFile: %wZ OpenCount=%u ReferCount=%u NonCachedCount=%u\n",
1672 MmFlushForWrite )) {
1689 if (SymLink !=
NULL) {
1703 Vcb->Vpb->RealDevice );
1713 &
Irp->Overlay.AllocationSize,
1746 if (bFcbLockAcquired) {
1764 DEBUG(
DL_ERR, (
"Ext2CreateFile: failed to create %wZ status = %xh\n",
1771 if (NoIntermediateBuffering) {
1772 Fcb->NonCachedOpenCount--;
1810 if (bMainResourceAcquired) {
1873 if (OpenTargetDirectory) {
1884 Vcb->OpenVolumeCount != 0 ) {
1896 if (
Vcb->OpenVolumeCount > 0) {
1907 &(
Vcb->ShareAccess) );
1911 if (
Vcb->OpenVolumeCount == 0 &&
1970 DEBUG(
DL_INF, (
"Ext2Create: Create on main device object.\n"));
2001 VcbResourceAcquired =
TRUE;
2024 if (VcbResourceAcquired) {
2053 struct inode Inode = { 0 };
2061 DEBUG(
DL_INF, (
"Ext2CreateInode: %S in %S(Inode=%xh)\n",
2063 Parent->Mcb->ShortName.Buffer,
2124 DEBUG(
DL_INF, (
"Ext2CreateInode: New Inode = %xh (Type=%xh)\n",
2160 Fcb->
Header.ValidDataLength.QuadPart = 0;
2175 if (
Fcb->
Header.AllocationSize.QuadPart > 0) {
2183 Fcb->Inode->i_size = 0;
2188 Fcb->Inode->i_atime =
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
char * strcpy(char *DstString, const char *SrcString)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx 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
#define FILE_DIRECTORY_FILE
#define FILE_NON_DIRECTORY_FILE
#define FILE_DELETE_ON_CLOSE
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
#define NT_SUCCESS(StatCode)
#define FILE_ATTRIBUTE_NORMAL
NTSTATUS Ext2CreateInode(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Parent, ULONG Type, ULONG FileAttr, PUNICODE_STRING FileName)
NTSTATUS Ext2OverwriteEa(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PIO_STATUS_BLOCK Iosb)
NTSTATUS Ext2Create(IN PEXT2_IRP_CONTEXT IrpContext)
NTSTATUS Ext2SupersedeOrOverWriteFile(IN PEXT2_IRP_CONTEXT IrpContext, IN PFILE_OBJECT FileObject, IN PEXT2_VCB Vcb, IN PEXT2_FCB Fcb, IN PLARGE_INTEGER AllocationSize, IN ULONG Disposition)
BOOLEAN Ext2IsSpecialSystemFile(IN PUNICODE_STRING FileName, IN BOOLEAN bDirectory)
NTSTATUS Ext2ScanDir(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Parent, IN PUNICODE_STRING FileName, OUT PULONG Inode, OUT struct dentry **dentry)
NTSTATUS Ext2CreateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PBOOLEAN OpPostIrp)
BOOLEAN Ext2IsNameValid(PUNICODE_STRING FileName)
NTSTATUS Ext2AddDotEntries(struct ext2_icb *icb, struct inode *dir, struct inode *inode)
NTSTATUS Ext2CreateVolume(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb)
NTSTATUS Ext2LookupFile(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PUNICODE_STRING FullName, IN PEXT2_MCB Parent, OUT PEXT2_MCB *Ext2Mcb, IN ULONG Linkdep)
NTSTATUS Ext2FollowLink(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Parent, IN PEXT2_MCB Mcb, IN ULONG Linkdep)
_In_ PIO_STACK_LOCATION IrpSp
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT _In_ ULONG _In_ BOOLEAN _In_ BOOLEAN DeleteOnClose
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT _In_ ULONG _In_ BOOLEAN NoEaKnowledge
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT ShareAccess
#define KeQuerySystemTime(t)
#define ExAcquireResourceExclusiveLite(res, wait)
VOID Ext2FreeMcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
#define ClearFlag(_F, _SF)
#define VCB_VOLUME_LOCKED
#define IsMcbSymLink(Mcb)
NTSTATUS Ext2IsFileRemovable(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Fcb, IN PEXT2_CCB Ccb)
#define VCB_WRITE_PROTECTED
VOID Ext2OplockComplete(IN PVOID Context, IN PIRP Irp)
VOID Ext2ReleaseFcb(IN PEXT2_FCB Fcb)
#define Ext2RaiseStatus(IRPCONTEXT, STATUS)
NTSTATUS Ext2WinntError(int rc)
#define IsMcbSpecialFile(Mcb)
#define EXT2_LOOKUP_NOT_FOLLOW
static ext3_fsblk_t ext3_free_blocks_count(struct ext3_super_block *es)
PVOID Ext2AllocatePool(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
int ext3_mark_inode_dirty(struct ext2_icb *icb, struct inode *in)
struct buffer_head * ext3_find_entry(struct ext2_icb *icb, struct dentry *dentry, struct ext3_dir_entry_2 **res_dir)
#define IsVcbReadOnly(Vcb)
#define IsFileDeleted(Mcb)
NTSTATUS Ext2TruncateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER AllocationSize)
NTSTATUS Ext2FreeInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG Inode, IN ULONG Type)
#define EXT2_MAX_NESTED_LINKS
LARGE_INTEGER Ext2NtTime(IN ULONG i_time)
#define EXT2_LOOKUP_FLAG_MASK
BOOLEAN Ext2SaveInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN struct inode *Inode)
PEXT2_MCB Ext2SearchMcbWithoutLock(PEXT2_MCB Parent, PUNICODE_STRING FileName)
NTSTATUS Ext2DeleteFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_MCB Mcb)
#define IsExt2FsDevice(DO)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define S_IPERMISSION_MASK
#define CCB_OPEN_REPARSE_POINT
#define DEC_MEM_COUNT(_i, _p, _s)
#define SetLongFlag(_F, _SF)
NTSTATUS Ext2OEMToUnicode(IN PEXT2_VCB Vcb, IN OUT PUNICODE_STRING Oem, IN POEM_STRING Unicode)
#define VCB_DISMOUNT_PENDING
VOID Ext2LinkTailMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
#define FCB_FILE_MODIFIED
struct dentry * Ext2BuildEntry(PEXT2_VCB Vcb, PEXT2_MCB Dcb, PUNICODE_STRING FileName)
NTSTATUS Ext2ReadSymlink(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN PVOID Buffer, IN ULONG Size, OUT PULONG BytesRead)
ULONG Ext2LinuxTime(IN LARGE_INTEGER SysTime)
#define ClearLongFlag(_F, _SF)
#define Ext2DerefMcb(Mcb)
struct _EXT2_FCBVCB * PEXT2_FCBVCB
VOID Ext2VerifyVcb(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb)
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define IsMcbDirectory(Mcb)
struct buffer_head * ext3_append(struct ext2_icb *icb, struct inode *inode, ext3_lblk_t *block, int *err)
#define FCB_ALLOC_IN_CREATE
void ext3_set_de_type(struct super_block *sb, struct ext3_dir_entry_2 *de, umode_t mode)
#define VCB_DEVICE_REMOVED
struct _EXT2_VCB * PEXT2_VCB
BOOLEAN Ext2IsEaNameValid(IN OEM_STRING Name)
PEXT2_CCB Ext2AllocateCcb(ULONG Flags, PEXT2_MCB SymLink)
VOID Ext2LockIrp(IN PVOID Context, IN PIRP Irp)
BOOLEAN Ext2LoadInode(IN PEXT2_VCB Vcb, IN struct inode *Inode)
#define CCB_DELETE_ON_CLOSE
PEXT2_MCB Ext2AllocateMcb(IN PEXT2_VCB Vcb, IN PUNICODE_STRING FileName, IN PUNICODE_STRING Parent, IN ULONG FileAttr)
#define BooleanFlagOn(F, SF)
NTSTATUS Ext2ExpandFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
VOID Ext2FreeCcb(IN PEXT2_VCB Vcb, IN PEXT2_CCB Ccb)
struct _EXT2_FCB * PEXT2_FCB
#define CEILING_ALIGNED(T, A, B)
NTSTATUS Ext2AddEntry(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Dcb, IN struct inode *Inode, IN PUNICODE_STRING FileName, OUT struct dentry **dentry)
BOOLEAN Ext2ClearInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG inode)
VOID Ext2FreeEntry(IN struct dentry *de)
NTSTATUS Ext2NewInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG GroupHint, IN ULONG Type, OUT PULONG Inode)
ULONG Ext2OEMToUnicodeSize(IN PEXT2_VCB Vcb, IN PANSI_STRING Oem)
#define Ext2ReferMcb(Mcb)
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
NTSTATUS Ext2FlushFiles(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bShutDown)
#define INC_MEM_COUNT(_i, _p, _s)
PEXT2_FCB Ext2AllocateFcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
VOID Ext2InsertMcb(PEXT2_VCB Vcb, PEXT2_MCB Parent, PEXT2_MCB Child)
NTSTATUS Ext2FlushVolume(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bShutDown)
ULONG Ext2TotalBlocks(PEXT2_VCB Vcb, PLARGE_INTEGER Size, PULONG pMeta)
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
#define EXT4_FEATURE_INCOMPAT_EXTENTS
#define EXT3_DIR_REC_LEN(len)
int ext4_ext_tree_init(void *icb, handle_t *handle, struct inode *inode)
Extended Attribute manipulation.
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
IN PDCB IN POEM_STRING OemName
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
struct _FileName FileName
struct _FILE_FULL_EA_INFORMATION * PFILE_FULL_EA_INFORMATION
#define FILE_OPEN_BY_FILE_ID
#define FILE_OVERWRITE_IF
#define FILE_OPEN_REPARSE_POINT
#define FILE_NO_EA_KNOWLEDGE
#define FILE_NO_INTERMEDIATE_BUFFERING
#define FILE_SEQUENTIAL_ONLY
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
GLuint GLsizei GLsizei * length
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
int ext4_fs_set_xattr(struct ext4_xattr_ref *ref, __u8 name_index, const char *name, size_t name_len, const void *data, size_t data_size, BOOL replace)
void ext4_xattr_purge_items(struct ext4_xattr_ref *xattr_ref)
#define EXT4_XATTR_INDEX_USER
int ext4_fs_put_xattr_ref(struct ext4_xattr_ref *ref)
int ext4_fs_get_xattr_ref(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB fs, PEXT2_MCB inode_ref, struct ext4_xattr_ref *ref)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
void __brelse(struct buffer_head *)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
#define FILE_DOES_NOT_EXIST
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_DELETE_CHILD
#define FILE_WRITE_ATTRIBUTES
#define FILE_ATTRIBUTE_DIRECTORY
#define FILE_ADD_SUBDIRECTORY
#define FILE_GENERIC_READ
#define FILE_ATTRIBUTE_TEMPORARY
#define FILE_ATTRIBUTE_REPARSE_POINT
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
VOID NTAPI FsRtlDissectName(IN UNICODE_STRING Name, OUT PUNICODE_STRING FirstPart, OUT PUNICODE_STRING RemainingPart)
VOID NTAPI IoSetShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
NTSTATUS NTAPI IoCheckShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess, IN BOOLEAN Update)
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoCheckEaBufferValidity(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define STATUS_INVALID_EA_NAME
#define STATUS_VOLUME_DISMOUNTED
#define STATUS_USER_MAPPED_FILE
#define STATUS_NOT_IMPLEMENTED
#define STATUS_OPLOCK_BREAK_IN_PROGRESS
#define STATUS_LINK_FAILED
BOOLEAN NTAPI FsRtlCurrentBatchOplock(IN POPLOCK Oplock)
NTSTATUS NTAPI FsRtlCheckOplock(IN POPLOCK Oplock, IN PIRP Irp, IN PVOID Context, IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
BOOLEAN NTAPI MmCanFileBeTruncated(_In_ PSECTION_OBJECT_POINTERS SectionObjectPointer, _In_opt_ PLARGE_INTEGER NewFileSize)
BOOLEAN NTAPI MmFlushImageSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN MMFLUSH_TYPE FlushType)
#define STATUS_CANNOT_DELETE
EXT2_IDENTIFIER Identifier
EXT2_IDENTIFIER_TYPE Type
ERESOURCE PagingIoResource
FSRTL_ADVANCED_FCB_HEADER Header
struct _IO_STACK_LOCATION::@3970::@3971 Create
union _IO_STACK_LOCATION::@1575 Parameters
PDEVICE_OBJECT DeviceObject
BOOLEAN ExceptionInProgress
PEXT2_IRP_CONTEXT IrpContext
struct super_block * i_sb
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_FILE_IS_A_DIRECTORY
#define STATUS_NOT_A_DIRECTORY
#define STATUS_MEDIA_WRITE_PROTECTED
#define STATUS_ACCESS_DENIED
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_DEVICE
#define STATUS_UNSUCCESSFUL
#define STATUS_NO_SUCH_FILE
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_FILE_DELETED
#define STATUS_SHARING_VIOLATION
#define STATUS_OBJECT_NAME_INVALID
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_OBJECT_NAME_NOT_FOUND
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID EaBuffer
#define FILE_OPBATCH_BREAK_UNDERWAY
#define SL_OPEN_PAGING_FILE
#define FILE_NOTIFY_CHANGE_SIZE
#define FILE_ACTION_MODIFIED
#define FILE_NOTIFY_CHANGE_ATTRIBUTES
#define FILE_NOTIFY_CHANGE_FILE_NAME
#define FO_NO_INTERMEDIATE_BUFFERING
#define FO_CACHE_SUPPORTED
#define FILE_NOTIFY_CHANGE_LAST_WRITE
#define SL_OPEN_TARGET_DIRECTORY
#define FILE_ACTION_ADDED
#define FILE_NOTIFY_CHANGE_DIR_NAME
#define SL_CASE_SENSITIVE
static unsigned int block