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;
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;
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) {
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) {
#define STATUS_OBJECT_NAME_COLLISION
#define FILE_GENERIC_READ
struct _EXT2_FCB * PEXT2_FCB
#define Ext2DerefMcb(Mcb)
BOOLEAN NTAPI CcPurgeCacheSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN UninitializeCacheMaps)
PEXT2_CCB Ext2AllocateCcb(ULONG Flags, PEXT2_MCB SymLink)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
#define FILE_SEQUENTIAL_ONLY
#define STATUS_FILE_IS_A_DIRECTORY
NTSTATUS Ext2DeleteFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PEXT2_MCB Mcb)
#define SL_CASE_SENSITIVE
#define STATUS_INSUFFICIENT_RESOURCES
#define FILE_ATTRIBUTE_TEMPORARY
#define IsMcbDirectory(Mcb)
#define CCB_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)
#define DEC_MEM_COUNT(_i, _p, _s)
ULONG Ext2TotalBlocks(PEXT2_VCB Vcb, PLARGE_INTEGER Size, PULONG pMeta)
FSRTL_ADVANCED_FCB_HEADER Header
#define SL_OPEN_PAGING_FILE
#define STATUS_INVALID_PARAMETER
_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 DesiredAccess
#define BooleanFlagOn(F, SF)
#define FILE_DIRECTORY_FILE
#define Ext2ReferMcb(Mcb)
IN PVOID IN PVOID IN USHORT IN USHORT Size
_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 CreateDisposition
#define FILE_NOTIFY_CHANGE_SIZE
#define FILE_NOTIFY_CHANGE_LAST_WRITE
#define FILE_NOTIFY_CHANGE_FILE_NAME
VOID NTAPI IoSetShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
#define FO_NO_INTERMEDIATE_BUFFERING
#define FILE_NOTIFY_CHANGE_DIR_NAME
BOOLEAN NTAPI FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
_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
VOID NTAPI IoRemoveShareAccess(IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess)
#define FILE_WRITE_ATTRIBUTES
#define FILE_OPEN_BY_FILE_ID
#define RtlMoveMemory(Destination, Source, Length)
NTSTATUS Ext2TruncateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER AllocationSize)
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
return STATUS_NOT_IMPLEMENTED
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB Vcb
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
#define FILE_NO_INTERMEDIATE_BUFFERING
#define STATUS_NOT_A_DIRECTORY
#define FILE_DELETE_CHILD
#define STATUS_SHARING_VIOLATION
NTSTATUS Ext2IsFileRemovable(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Fcb, IN PEXT2_CCB Ccb)
#define FILE_NO_EA_KNOWLEDGE
#define FILE_OPBATCH_BREAK_UNDERWAY
#define FILE_ACTION_MODIFIED
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define IsFileDeleted(Mcb)
#define FILE_OVERWRITE_IF
#define INC_MEM_COUNT(_i, _p, _s)
PEXT2_FCB Ext2AllocateFcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
#define STATUS_MEDIA_WRITE_PROTECTED
#define ClearLongFlag(_F, _SF)
BOOLEAN Ext2IsNameValid(PUNICODE_STRING FileName)
#define STATUS_FILE_DELETED
#define FILE_DELETE_ON_CLOSE
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
NTSTATUS Ext2OverwriteEa(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PIO_STATUS_BLOCK Iosb)
#define NT_SUCCESS(StatCode)
VOID NTAPI FsRtlDissectName(IN UNICODE_STRING Name, OUT PUNICODE_STRING FirstPart, OUT PUNICODE_STRING RemainingPart)
BOOLEAN NTAPI MmFlushImageSection(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN MMFLUSH_TYPE FlushType)
#define IsVcbReadOnly(Vcb)
struct _DEVICE_OBJECT * RealDevice
#define IsMcbSymLink(Mcb)
#define CCB_OPEN_REPARSE_POINT
NTSTATUS Ext2CreateInode(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Parent, ULONG Type, ULONG FileAttr, PUNICODE_STRING FileName)
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_ACCESS_DENIED
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlCurrentBatchOplock(IN POPLOCK Oplock)
#define FO_CACHE_SUPPORTED
#define STATUS_UNSUCCESSFUL
#define VCB_WRITE_PROTECTED
#define FILE_DOES_NOT_EXIST
#define STATUS_CANNOT_DELETE
static ext3_fsblk_t ext3_free_blocks_count(struct ext3_super_block *es)
_Must_inspect_result_ _In_ PFLT_INSTANCE _Out_ PBOOLEAN IsDirectory
#define FILE_ADD_SUBDIRECTORY
#define FCB_FILE_MODIFIED
#define FILE_NON_DIRECTORY_FILE
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
NTSTATUS NTAPI IoCheckShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, IN PSHARE_ACCESS ShareAccess, IN BOOLEAN Update)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
struct _FileName FileName
#define SL_OPEN_TARGET_DIRECTORY
NTSTATUS Ext2AddDotEntries(struct ext2_icb *icb, struct inode *dir, struct inode *inode)
#define STATUS_OBJECT_NAME_NOT_FOUND
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
_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
#define Ext2RaiseStatus(IRPCONTEXT, STATUS)
NTSTATUS Ext2ExpandFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER Size)
#define FILE_NOTIFY_CHANGE_ATTRIBUTES
_In_ PIO_STACK_LOCATION IrpSp
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
#define STATUS_NO_SUCH_FILE
#define SetLongFlag(_F, _SF)
#define STATUS_OBJECT_NAME_INVALID
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)
#define STATUS_OPLOCK_BREAK_IN_PROGRESS
#define FILE_ACTION_ADDED
VOID NTAPI Ext2LockIrp(IN PVOID Context, IN PIRP Irp)
VOID Ext2ReleaseFcb(IN PEXT2_FCB Fcb)
ERESOURCE PagingIoResource
#define RtlZeroMemory(Destination, Length)
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
#define RtlCopyMemory(Destination, Source, Length)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
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)
#define FCB_ALLOC_IN_CREATE
VOID Ext2FreeCcb(IN PEXT2_VCB Vcb, IN PEXT2_CCB Ccb)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
PVOID Ext2AllocatePool(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
#define FILE_OPEN_REPARSE_POINT
VOID NTAPI Ext2OplockComplete(IN PVOID Context, IN PIRP Irp)
HRESULT Create([out]ITransactionReceiver **ppReceiver)
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)
_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