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;
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) {
1873 if (OpenTargetDirectory) {
1884 Vcb->OpenVolumeCount != 0 ) {
1896 if (
Vcb->OpenVolumeCount > 0) {
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 =
#define KeQuerySystemTime(t)
static unsigned int block
NTSTATUS Ext2WinntError(int rc)
#define STATUS_OBJECT_NAME_COLLISION
#define FILE_GENERIC_READ
struct _EXT2_FCB * PEXT2_FCB
#define Ext2DerefMcb(Mcb)
BOOLEAN NTAPI MmCanFileBeTruncated(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN PLARGE_INTEGER NewFileSize)
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 EXT3_DIR_REC_LEN(len)
PEXT2_MCB Ext2AllocateMcb(IN PEXT2_VCB Vcb, IN PUNICODE_STRING FileName, IN PUNICODE_STRING Parent, IN ULONG FileAttr)
#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
struct _FILE_FULL_EA_INFORMATION * PFILE_FULL_EA_INFORMATION
#define CEILING_ALIGNED(T, A, B)
LARGE_INTEGER Ext2NtTime(IN ULONG i_time)
#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_ATTRIBUTE_SYSTEM
Extended Attribute manipulation.
if(OpenRequiringOplock &&(Iosb.Status==STATUS_SUCCESS))
#define FILE_DIRECTORY_FILE
PDEVICE_OBJECT DeviceObject
#define VCB_DEVICE_REMOVED
NTSTATUS Ext2FollowLink(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Parent, IN PEXT2_MCB Mcb, IN ULONG Linkdep)
#define EXT2_MAX_NESTED_LINKS
_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
_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)
PEXT2_IRP_CONTEXT IrpContext
#define Ext2ReferMcb(Mcb)
IN PVOID IN PVOID IN USHORT IN USHORT Size
VOID Ext2FreeMcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
_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
NTSTATUS Ext2FlushVolume(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bShutDown)
VOID NTAPI IoSetShareAccess(IN ACCESS_MASK DesiredAccess, IN ULONG DesiredShareAccess, IN PFILE_OBJECT FileObject, OUT PSHARE_ACCESS ShareAccess)
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
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)
#define FO_NO_INTERMEDIATE_BUFFERING
#define FILE_NOTIFY_CHANGE_DIR_NAME
BOOLEAN Ext2IsEaNameValid(IN OEM_STRING 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)
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
#define FILE_WRITE_ATTRIBUTES
#define FILE_OPEN_BY_FILE_ID
#define RtlMoveMemory(Destination, Source, Length)
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 Ext2TruncateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_MCB Mcb, PLARGE_INTEGER AllocationSize)
EXT2_IDENTIFIER_TYPE Type
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
int ext4_ext_tree_init(void *icb, handle_t *handle, struct inode *inode)
VOID Ext2FreeEntry(IN struct dentry *de)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB Vcb
int Ext2CheckFileAccess(PEXT2_VCB Vcb, PEXT2_MCB Mcb, int attempt)
VOID Ext2InsertMcb(PEXT2_VCB Vcb, PEXT2_MCB Parent, PEXT2_MCB Child)
#define FILE_NO_INTERMEDIATE_BUFFERING
#define STATUS_NOT_A_DIRECTORY
#define FILE_DELETE_CHILD
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define STATUS_SHARING_VIOLATION
NTSTATUS Ext2IsFileRemovable(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_FCB Fcb, IN PEXT2_CCB Ccb)
int ext3_mark_inode_dirty(struct ext2_icb *icb, struct inode *in)
EXT2_IDENTIFIER Identifier
#define FILE_NO_EA_KNOWLEDGE
GLenum GLuint GLenum GLsizei length
NTSTATUS Ext2FreeInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG Inode, IN ULONG Type)
#define EXT4_XATTR_INDEX_USER
#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)
NTSTATUS NTAPI IoCheckEaBufferValidity(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PEXT2_FCB Ext2AllocateFcb(IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb)
#define STATUS_MEDIA_WRITE_PROTECTED
BOOLEAN Ext2LoadInode(IN PEXT2_VCB Vcb, IN struct inode *Inode)
#define ClearLongFlag(_F, _SF)
BOOLEAN Ext2IsNameValid(PUNICODE_STRING FileName)
#define STATUS_USER_MAPPED_FILE
#define FILE_ATTRIBUTE_REPARSE_POINT
#define STATUS_FILE_DELETED
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
#define EXT2_LOOKUP_FLAG_MASK
#define EXT4_FEATURE_INCOMPAT_EXTENTS
ULONG Ext2OEMToUnicodeSize(IN PEXT2_VCB Vcb, IN PANSI_STRING Oem)
#define FILE_ATTRIBUTE_DIRECTORY
int ext4_fs_get_xattr_ref(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB fs, PEXT2_MCB inode_ref, struct ext4_xattr_ref *ref)
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)
#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 Ext2CreateFile(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PBOOLEAN OpPostIrp)
NTSTATUS Ext2OverwriteEa(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb, PEXT2_FCB Fcb, PIO_STATUS_BLOCK Iosb)
int ext4_fs_put_xattr_ref(struct ext4_xattr_ref *ref)
#define NT_SUCCESS(StatCode)
VOID NTAPI FsRtlDissectName(IN UNICODE_STRING Name, OUT PUNICODE_STRING FirstPart, OUT PUNICODE_STRING RemainingPart)
#define STATUS_NO_SUCH_DEVICE
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 FILE_ATTRIBUTE_READONLY
void __brelse(struct buffer_head *)
struct _EXT2_FCBVCB * PEXT2_FCBVCB
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_ACCESS_DENIED
BOOLEAN Ext2IsSpecialSystemFile(IN PUNICODE_STRING FileName, IN BOOLEAN bDirectory)
NTSTATUS Ext2Create(IN PEXT2_IRP_CONTEXT IrpContext)
VOID Ext2LinkTailMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb)
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
#define FILE_ATTRIBUTE_NORMAL
static ext3_fsblk_t ext3_free_blocks_count(struct ext3_super_block *es)
#define VCB_DISMOUNT_PENDING
struct buffer_head * ext3_find_entry(struct ext2_icb *icb, struct dentry *dentry, struct ext3_dir_entry_2 **res_dir)
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
_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
#define STATUS_INVALID_EA_NAME
NTSTATUS Ext2NewInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG GroupHint, IN ULONG Type, OUT PULONG Inode)
NTSTATUS Ext2OEMToUnicode(IN PEXT2_VCB Vcb, IN OUT PUNICODE_STRING Oem, IN POEM_STRING Unicode)
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
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)
BOOLEAN Ext2ClearInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN ULONG inode)
#define STATUS_OBJECT_NAME_NOT_FOUND
NTSTATUS Ext2FlushFiles(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN BOOLEAN bShutDown)
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
PEXT2_MCB Ext2SearchMcbWithoutLock(PEXT2_MCB Parent, PUNICODE_STRING FileName)
_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
VOID NTAPI CcSetFileSizes(IN PFILE_OBJECT FileObject, IN PCC_FILE_SIZES FileSizes)
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 Ext2CreateVolume(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB Vcb)
#define FILE_ATTRIBUTE_HIDDEN
struct buffer_head * ext3_append(struct ext2_icb *icb, struct inode *inode, ext3_lblk_t *block, int *err)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
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 VCB_VOLUME_LOCKED
#define FILE_ACTION_ADDED
VOID NTAPI Ext2LockIrp(IN PVOID Context, IN PIRP Irp)
#define IsMcbSpecialFile(Mcb)
VOID Ext2ReleaseFcb(IN PEXT2_FCB Fcb)
#define S_IPERMISSION_MASK
#define STATUS_VOLUME_DISMOUNTED
#define IsExt2FsDevice(DO)
char * strcpy(char *DstString, const char *SrcString)
ERESOURCE PagingIoResource
struct super_block * i_sb
#define RtlZeroMemory(Destination, Length)
DEVICE_RELATION_TYPE Type
VOID Ext2FreePool(IN PVOID P, IN ULONG Tag)
#define RtlCopyMemory(Destination, Source, Length)
VOID NTAPI IoSetHardErrorOrVerifyDevice(IN PIRP Irp, IN PDEVICE_OBJECT DeviceObject)
struct _EXT2_VCB * PEXT2_VCB
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)
#define STATUS_LINK_FAILED
IN PDCB IN POEM_STRING OemName
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
PVOID Ext2AllocatePool(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes, IN ULONG Tag)
NTSTATUS Ext2ReadSymlink(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN PVOID Buffer, IN ULONG Size, OUT PULONG BytesRead)
#define EXT2_LOOKUP_NOT_FOLLOW
#define FILE_OPEN_REPARSE_POINT
VOID NTAPI Ext2OplockComplete(IN PVOID Context, IN PIRP Irp)
HRESULT Create([out]ITransactionReceiver **ppReceiver)
BOOLEAN Ext2SaveInode(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN struct inode *Inode)
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)
VOID Ext2VerifyVcb(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb)
_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
ULONG Ext2LinuxTime(IN LARGE_INTEGER SysTime)
void ext3_set_de_type(struct super_block *sb, struct ext3_dir_entry_2 *de, umode_t mode)
void ext4_xattr_purge_items(struct ext4_xattr_ref *xattr_ref)
struct dentry * Ext2BuildEntry(PEXT2_VCB Vcb, PEXT2_MCB Dcb, PUNICODE_STRING FileName)
BOOLEAN ExceptionInProgress