28#pragma alloc_text(PAGE, Ext2QueryFileInformation)
29#pragma alloc_text(PAGE, Ext2SetFileInformation)
30#pragma alloc_text(PAGE, Ext2ExpandFile)
31#pragma alloc_text(PAGE, Ext2TruncateFile)
32#pragma alloc_text(PAGE, Ext2SetDispositionInfo)
33#pragma alloc_text(PAGE, Ext2SetRenameInfo)
34#pragma alloc_text(PAGE, Ext2SetLinkInfo)
35#pragma alloc_text(PAGE, Ext2DeleteFile)
41 ULONG EaEntrySize = 4 + 1 + 1 + 2 +
item->name_len + 1 +
item->data_size;
43 *EaSize += EaEntrySize - 4;
113 FcbResourceAcquired =
TRUE;
124 Irp = IrpContext->Irp;
130 Buffer =
Irp->AssociatedIrp.SystemBuffer;
175 FSI->NumberOfLinks =
Mcb->Inode.i_nlink;
184 FSI->AllocationSize.QuadPart = 0;
185 FSI->EndOfFile.QuadPart = 0;
188 FSI->AllocationSize.QuadPart = 0;
189 FSI->EndOfFile.QuadPart = 0;
256 Mcb->FullName.Length) {
269 Mcb->FullName.Buffer,
343 FSI->NumberOfLinks =
Mcb->Inode.i_nlink;
352 FSI->AllocationSize.QuadPart = 0;
353 FSI->EndOfFile.QuadPart = 0;
356 FSI->AllocationSize.QuadPart = 0;
357 FSI->EndOfFile.QuadPart = 0;
376 Mcb->ShortName.Length -
sizeof(
WCHAR)) {
381 Mcb->ShortName.Buffer,
383 NameInformation.FileName)
390 Mcb->ShortName.Buffer,
391 Mcb->ShortName.Length
395 Mcb->ShortName.Length -
sizeof(
WCHAR);
450 Irp->IoStatus.Information =
456#if (_WIN32_WINNT >= 0x0500)
487 DEBUG(
DL_WRN, (
"Ext2QueryInformation: invalid class: %d\n",
495 if (FcbResourceAcquired) {
557 Buffer =
Irp->AssociatedIrp.SystemBuffer;
650 FcbMainResourceAcquired =
TRUE;
663 FcbPagingIoResourceAcquired =
TRUE;
802 DEBUG(
DL_IO, (
"Ext2SetInformation: %wZ NewSize=%I64xh AllocationSize=%I64xh "
803 "FileSize=%I64xh VDL=%I64xh i_size=%I64xh status = %xh\n",
920 if (
Fcb->
Header.FileSize.QuadPart >= 0x80000000 &&
934 DEBUG(
DL_IO, (
"Ext2SetInformation: FileEndOfFileInformation %wZ EndofFile=%I64xh "
935 "AllocatieonSize=%I64xh FileSize=%I64xh VDL=%I64xh i_size=%I64xh status = %xh\n",
984 DEBUG(
DL_INF, (
"Ext2SetInformation: SetDispositionInformation: DeleteFile=%d %wZ status = %xh\n",
1037 DEBUG(
DL_WRN, (
"Ext2SetInformation: invalid class: %d\n",
1044 if (FcbPagingIoResourceAcquired) {
1058 if (FcbMainResourceAcquired) {
1062 if (!IrpContext->ExceptionInProgress) {
1083 ULONG Blocks, Meta =0, Remain;
1091 if (Blocks <= Vcb->max_blocks_per_layer[1]) {
1094 Blocks -=
Vcb->max_blocks_per_layer[1];
1098 if (Blocks <= Vcb->max_blocks_per_layer[2]) {
1103 Blocks -=
Vcb->max_blocks_per_layer[2];
1105 if (Blocks >
Vcb->max_blocks_per_layer[3]) {
1106 Blocks =
Vcb->max_blocks_per_layer[3];
1110 Remain = Blocks %
Vcb->max_blocks_per_layer[2];
1111 Blocks = Blocks /
Vcb->max_blocks_per_layer[2];
1123 return (Blocks + Meta);
1141 bAlloc, pBlock,
Number );
1144 bAlloc, pBlock,
Number );
1186#if EXT2_PRE_ALLOCATION_SUPPORT
1220 if (
Size->QuadPart == 0) {
1259 MmFlushForDelete )) {
1297 DEBUG(
DL_INF, (
"Ext2SetDispositionInfo: bDelete=%x\n", bDelete));
1301 DEBUG(
DL_INF, (
"Ext2SetDispositionInformation: Removing %wZ.\n",
1380 if (TargetObject ==
NULL) {
1401 TargetMcb =
Mcb->Parent;
1403 TargetMcb = TargetMcb->
Target;
1433 if (TargetMcb->
Inode.i_ino ==
Mcb->Parent->Inode.i_ino) {
1445 if (!bFcbLockAcquired) {
1447 bFcbLockAcquired =
TRUE;
1458 ParentMcb =
Mcb->Parent;
1461 if ((TargetMcb->
Inode.i_ino != ParentMcb->
Inode.i_ino)) {
1471 if (bFcbLockAcquired) {
1473 bFcbLockAcquired =
FALSE;
1481 DEBUG(
DL_RES, (
"Ext2SetRenameInfo: rename %wZ to %wZ\\%wZ\n",
1495 if (!ReplaceIfExists) {
1498 DEBUG(
DL_RES, (
"Ext2SetRenameInfo: Target file %wZ exists\n",
1504 if ( (ExistingFcb = ExistingMcb->
Fcb) && !
IsMcbSymLink(ExistingMcb) ) {
1508 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Target file %wZ cannot be removed.\n",
1516 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Failed to delete %wZ with status: %xh.\n",
1522 bTargetRemoved =
TRUE;
1529 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Failed to remove entry %wZ with status %xh.\n",
1538 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Failed to add entry for %wZ with status: %xh.\n",
1548 ParentMcb->
Inode.i_ino,
1549 TargetMcb->
Inode.i_ino );
1551 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Failed to set parent refer of %wZ with %xh.\n",
1561 char *np =
Mcb->de->d_name.name;
1562 *(
Mcb->de) = *NewEntry;
1563 NewEntry->
d_name.name = np;
1566 if (bTargetRemoved) {
1601 if (TargetMcb->
Inode.i_ino != ParentMcb->
Inode.i_ino) {
1642 if (bFcbLockAcquired) {
1644 bFcbLockAcquired =
FALSE;
1718 if (TargetObject ==
NULL) {
1739 TargetMcb =
Mcb->Parent;
1741 TargetMcb = TargetMcb->
Target;
1768 if (TargetMcb->
Inode.i_ino ==
Mcb->Parent->Inode.i_ino) {
1779 bFcbLockAcquired =
TRUE;
1789 ParentMcb =
Mcb->Parent;
1792 if ((TargetMcb->
Inode.i_ino != ParentMcb->
Inode.i_ino)) {
1802 if (bFcbLockAcquired) {
1804 bFcbLockAcquired =
FALSE;
1812 DEBUG(
DL_RES, (
"Ext2SetLinkInfo: %wZ\\%wZ -> %wZ\n",
1816 TargetMcb, &ExistingMcb, 0);
1819 if (!ReplaceIfExists) {
1822 DEBUG(
DL_RES, (
"Ext2SetRenameInfo: Target file %wZ exists\n",
1828 if ( (ExistingFcb = ExistingMcb->
Fcb) && !
IsMcbSymLink(ExistingMcb) ) {
1831 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Target file %wZ cannot be removed.\n",
1839 DEBUG(
DL_REN, (
"Ext2SetRenameInfo: Failed to delete %wZ with status: %xh.\n",
1844 bTargetRemoved =
TRUE;
1851 DEBUG(
DL_REN, (
"Ext2SetLinkInfo: Failed to add entry for %wZ with status: %xh.\n",
1856 if (bTargetRemoved) {
1883 if (bFcbLockAcquired) {
1885 bFcbLockAcquired =
FALSE;
1941 DEBUG(
DL_INF, (
"Ext2DeleteFile: File %wZ (%xh) will be deleted!\n",
1942 &
Mcb->FullName,
Mcb->Inode.i_ino));
1959 VcbResourceAcquired =
TRUE;
1962 bFcbLockAcquired =
TRUE;
1973 if (bFcbLockAcquired) {
1975 bFcbLockAcquired =
FALSE;
1979 DcbResourceAcquired =
1992 FcbResourceAcquired =
1995 FcbPagingIoAcquired =
1999 if (DcbResourceAcquired) {
2001 DcbResourceAcquired =
FALSE;
2004 if (VcbResourceAcquired) {
2006 VcbResourceAcquired =
FALSE;
2010 if (
Mcb->Inode.i_nlink > 0) {
2015 if (
Mcb->Inode.i_nlink > 0) {
2019 if (
Mcb->Inode.i_nlink >= 2) {
2053 Mcb->Inode.i_size =
Size.QuadPart;
2060 Mcb->Inode.i_nlink = 0;
2068 if (FcbPagingIoAcquired) {
2072 if (FcbResourceAcquired) {
2076 if (DcbResourceAcquired) {
2080 if (bFcbLockAcquired) {
2084 if (VcbResourceAcquired) {
2095 DEBUG(
DL_INF, (
"Ext2DeleteFile: %wZ Succeed... EXT2SB->S_FREE_BLOCKS = %I64xh .\n",
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define CcIsFileCached(FO)
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
#define IRP_CONTEXT_FLAG_WAIT
#define NT_SUCCESS(StatCode)
#define FILE_ATTRIBUTE_NORMAL
#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE
NTSTATUS Ext2BlockMap(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN bAlloc, OUT PULONG pBlock, OUT PULONG Number)
NTSTATUS Ext2IsFileRemovable(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Fcb, IN PEXT2_CCB Ccb)
NTSTATUS Ext2TruncateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
NTSTATUS Ext2SetLinkInfo(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_CCB Ccb)
NTSTATUS Ext2DeleteFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_MCB Mcb)
NTSTATUS Ext2SetRenameInfo(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_CCB Ccb)
NTSTATUS Ext2SetFileInformation(IN PEXT2_IRP_CONTEXT IrpContext)
ULONG Ext2InodeType(PEXT2_MCB Mcb)
NTSTATUS Ext2SetDispositionInfo(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_CCB Ccb, BOOLEAN bDelete)
static int Ext2IterateAllEa(struct ext4_xattr_ref *xattr_ref, struct ext4_xattr_item *item, BOOL is_last)
NTSTATUS Ext2QueryFileInformation(IN PEXT2_IRP_CONTEXT IrpContext)
NTSTATUS Ext2ExpandFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
ULONG Ext2TotalBlocks(PEXT2_VCB Vcb, PLARGE_INTEGER Size, PULONG pMeta)
_In_ PIO_STACK_LOCATION IrpSp
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB ParentDcb
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB * Dcb
#define KeQuerySystemTime(t)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
BOOLEAN Ext2LookupFile(PEXT2_VOLUME_INFO Volume, PCSTR FileName, PEXT2_FILE_INFO Ext2FileInfo)
#define ClearFlag(_F, _SF)
#define VCB_VOLUME_LOCKED
#define IsMcbSymLink(Mcb)
NTSTATUS Ext2ExpandIndirect(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, ULONG Start, ULONG End, PLARGE_INTEGER Size)
VOID Ext2ReleaseFcb(IN PEXT2_FCB Fcb)
NTSTATUS Ext2WinntError(int rc)
NTSTATUS Ext2TruncateExtent(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
#define IsMcbSpecialFile(Mcb)
static ext3_fsblk_t ext3_free_blocks_count(struct ext3_super_block *es)
#define Ext2SetOwnerWritable(m)
#define IsVcbReadOnly(Vcb)
NTSTATUS Ext2ExpandExtent(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, ULONG Start, ULONG End, PLARGE_INTEGER Size)
#define IsFileDeleted(Mcb)
NTSTATUS Ext2FreeInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG Inode, IN ULONG Type)
LARGE_INTEGER Ext2NtTime(IN ULONG i_time)
BOOLEAN Ext2SaveInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN struct inode *Inode)
#define EXT2_LINKLEN_IN_INODE
#define IsExt2FsDevice(DO)
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define FCB_ALLOC_IN_WRITE
#define SetLongFlag(_F, _SF)
NTSTATUS Ext2MapExtent(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN Alloc, OUT PULONG Block, OUT PULONG Number)
#define FCB_FILE_MODIFIED
#define FCB_ALLOC_IN_SETINFO
ULONG Ext2LinuxTime(IN LARGE_INTEGER SysTime)
#define ClearLongFlag(_F, _SF)
#define Ext2DerefMcb(Mcb)
NTSTATUS Ext2SetParentEntry(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Dcb, IN ULONG OldParent, IN ULONG NewParent)
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define IsMcbDirectory(Mcb)
#define IsInodeSymLink(I)
#define FCB_DELETE_PENDING
BOOLEAN Ext2SaveSuper(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb)
#define FCB_ALLOC_IN_CREATE
#define Ext2SetOwnerReadOnly(m)
struct _EXT2_VCB * PEXT2_VCB
BOOLEAN Ext2BuildName(IN OUT PUNICODE_STRING Target, IN PUNICODE_STRING File, IN PUNICODE_STRING Parent)
BOOLEAN Ext2RemoveMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
struct _EXT2_CCB * PEXT2_CCB
#define CCB_LAST_WRITE_UPDATED
NTSTATUS Ext2TruncateIndirect(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
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)
NTSTATUS Ext2MapIndirect(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Index, IN BOOLEAN bAlloc, OUT PULONG pBlock, OUT PULONG Number)
VOID Ext2FreeEntry(IN struct dentry *de)
NTSTATUS Ext2RemoveEntry(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Dcb, IN PEXT2_MCB Mcb)
BOOLEAN Ext2ListExtents(PLARGE_MCB Extents)
#define Ext2ReferMcb(Mcb)
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
BOOLEAN Ext2IsDirectoryEmpty(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
#define IsLinkInvalid(Mcb)
VOID Ext2ClearAllExtents(PLARGE_MCB Zone)
PEXT2_FCB Ext2AllocateFcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
VOID Ext2InsertMcb(PEXT2_VCB Vcb, PEXT2_MCB Parent, PEXT2_MCB Child)
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
FAST_IO_POSSIBLE Ext2IsFastIoPossible(IN PEXT2_FCB Fcb)
#define INODE_HAS_EXTENT(i)
Extended Attribute manipulation.
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
struct _FileName FileName
_Must_inspect_result_ _In_ USHORT NewSize
@ FilePositionInformation
@ FileEndOfFileInformation
@ FileInternalInformation
@ FileAttributeTagInformation
@ FileValidDataLengthInformation
@ FileAllocationInformation
@ FileNetworkOpenInformation
@ FileDispositionInformation
struct _FILE_NETWORK_OPEN_INFORMATION FILE_NETWORK_OPEN_INFORMATION
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
struct _FILE_NETWORK_OPEN_INFORMATION * PFILE_NETWORK_OPEN_INFORMATION
struct _FILE_LINK_INFORMATION * PFILE_LINK_INFORMATION
struct _FILE_INTERNAL_INFORMATION * PFILE_INTERNAL_INFORMATION
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
#define EXT4_XATTR_ITERATE_CONT
void ext4_fs_xattr_iterate(struct ext4_xattr_ref *ref, int(*iter)(struct ext4_xattr_ref *ref, struct ext4_xattr_item *item, BOOL is_last))
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)
struct _FILE_ATTRIBUTE_TAG_INFORMATION FILE_ATTRIBUTE_TAG_INFORMATION
struct _FILE_ALLOCATION_INFORMATION * PFILE_ALLOCATION_INFORMATION
struct _FILE_RENAME_INFORMATION * PFILE_RENAME_INFORMATION
struct _FILE_ALL_INFORMATION * PFILE_ALL_INFORMATION
struct _FILE_NAME_INFORMATION * PFILE_NAME_INFORMATION
struct _FILE_EA_INFORMATION * PFILE_EA_INFORMATION
struct _FILE_ATTRIBUTE_TAG_INFORMATION * PFILE_ATTRIBUTE_TAG_INFORMATION
struct _FILE_EA_INFORMATION FILE_EA_INFORMATION
struct _FILE_ALL_INFORMATION FILE_ALL_INFORMATION
#define FILE_STANDARD_INFORMATION
#define FILE_BASIC_INFORMATION
static OUT PIO_STATUS_BLOCK OUT PVOID IN ULONG IN FILE_INFORMATION_CLASS FileInformationClass
_In_ UINT _In_ UINT BytesToCopy
#define FILE_ATTRIBUTE_READONLY
struct _FILE_POSITION_INFORMATION FILE_POSITION_INFORMATION
struct _FILE_END_OF_FILE_INFORMATION * PFILE_END_OF_FILE_INFORMATION
struct _FILE_BASIC_INFORMATION * PFILE_BASIC_INFORMATION
struct _FILE_ALIGNMENT_INFORMATION FILE_ALIGNMENT_INFORMATION
#define FILE_ATTRIBUTE_DIRECTORY
struct _FILE_DISPOSITION_INFORMATION * PFILE_DISPOSITION_INFORMATION
struct _FILE_POSITION_INFORMATION * PFILE_POSITION_INFORMATION
#define FILE_ATTRIBUTE_TEMPORARY
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlAreNamesEqual(IN PCUNICODE_STRING Name1, IN PCUNICODE_STRING Name2, IN BOOLEAN IgnoreCase, IN PCWCH UpcaseTable OPTIONAL)
BOOLEAN NTAPI FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
VOID NTAPI FsRtlNotifyFullChangeDirectory(IN PNOTIFY_SYNC NotifySync, IN PLIST_ENTRY NotifyList, IN PVOID FsContext, IN PSTRING FullDirectoryName, IN BOOLEAN WatchTree, IN BOOLEAN IgnoreBuffer, IN ULONG CompletionFilter, IN PIRP NotifyIrp, IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL, IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL)
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
#define STATUS_USER_MAPPED_FILE
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)
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)
struct _FILE_STANDARD_INFORMATION * PFILE_STANDARD_INFORMATION
struct _FILE_ACCESS_INFORMATION FILE_ACCESS_INFORMATION
#define FileStandardInformation
#define STATUS_CANNOT_DELETE
#define STATUS_BUFFER_OVERFLOW
EXT2_IDENTIFIER_TYPE Type
ERESOURCE PagingIoResource
NTFSIDENTIFIER Identifier
FSRTL_ADVANCED_FCB_HEADER Header
struct _IO_STACK_LOCATION::@3980::@3989 QueryFile
union _IO_STACK_LOCATION::@1581 Parameters
struct _IO_STACK_LOCATION::@3980::@3990 SetFile
struct dentry::@720 d_name
PDEVICE_OBJECT DeviceObject
EXT2_IDENTIFIER Identifier
BOOLEAN ExceptionInProgress
PEXT2_IRP_CONTEXT IrpContext
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_DIRECTORY_NOT_EMPTY
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_MEDIA_WRITE_PROTECTED
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_OBJECT_NAME_COLLISION
#define STATUS_FILE_DELETED
#define STATUS_OBJECT_NAME_INVALID
#define STATUS_INSUFFICIENT_RESOURCES
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
#define FILE_NOTIFY_CHANGE_SIZE
#define FILE_ACTION_MODIFIED
#define FO_TEMPORARY_FILE
#define FILE_ACTION_RENAMED_OLD_NAME
#define FILE_NOTIFY_CHANGE_LAST_ACCESS
#define FILE_NOTIFY_CHANGE_ATTRIBUTES
#define FILE_ACTION_REMOVED
#define FILE_NOTIFY_CHANGE_FILE_NAME
#define FILE_ACTION_RENAMED_NEW_NAME
struct _FILE_VALID_DATA_LENGTH_INFORMATION * PFILE_VALID_DATA_LENGTH_INFORMATION
#define FO_NO_INTERMEDIATE_BUFFERING
#define FILE_NOTIFY_CHANGE_CREATION
#define IO_REPARSE_TAG_RESERVED_ZERO
#define FILE_NOTIFY_CHANGE_LAST_WRITE
#define FILE_ACTION_ADDED
#define FILE_NOTIFY_CHANGE_DIR_NAME
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID _Out_ PIO_STATUS_BLOCK _In_ ULONG NotifyFilter
_In_ PUNICODE_STRING NewName