diff -prudN ext2_new1/CMakeLists.txt ext2_new/CMakeLists.txt --- ext2_new1/CMakeLists.txt 1970-01-01 02:00:00.000000000 +0200 +++ ext2_new/CMakeLists.txt 2015-10-06 09:40:23.066703100 +0300 @@ -0,0 +1,105 @@ + +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/drivers + inc) + +list(APPEND SOURCE + src/init.c + src/ext3/generic.c + src/ext3/htree.c + src/ext3/indirect.c + src/ext3/recover.c + src/ext4/ext4_bh.c + src/ext4/ext4_extents.c + src/ext4/ext4_jbd2.c + src/ext4/extents.c + src/jbd/recovery.c + src/jbd/replay.c + src/jbd/revoke.c + src/nls/nls_ascii.c + src/nls/nls_base.c + src/nls/nls_cp437.c + src/nls/nls_cp737.c + src/nls/nls_cp775.c + src/nls/nls_cp850.c + src/nls/nls_cp852.c + src/nls/nls_cp855.c + src/nls/nls_cp857.c + src/nls/nls_cp860.c + src/nls/nls_cp861.c + src/nls/nls_cp862.c + src/nls/nls_cp863.c + src/nls/nls_cp864.c + src/nls/nls_cp865.c + src/nls/nls_cp866.c + src/nls/nls_cp869.c + src/nls/nls_cp874.c + src/nls/nls_cp932.c + src/nls/nls_cp936.c + src/nls/nls_cp949.c + src/nls/nls_cp950.c + src/nls/nls_cp1250.c + src/nls/nls_cp1251.c + src/nls/nls_cp1255.c + src/nls/nls_euc-jp.c + src/nls/nls_iso8859-1.c + src/nls/nls_iso8859-2.c + src/nls/nls_iso8859-3.c + src/nls/nls_iso8859-4.c + src/nls/nls_iso8859-5.c + src/nls/nls_iso8859-6.c + src/nls/nls_iso8859-7.c + src/nls/nls_iso8859-9.c + src/nls/nls_iso8859-13.c + src/nls/nls_iso8859-14.c + src/nls/nls_iso8859-15.c + src/nls/nls_koi8-r.c + src/nls/nls_koi8-ru.c + src/nls/nls_koi8-u.c + src/nls/nls_utf8.c + src/block.c + src/cleanup.c + src/close.c + src/cmcb.c + src/create.c + src/debug.c + src/devctl.c + src/dirctl.c + src/dispatch.c + src/except.c + src/fastio.c + src/fileinfo.c + src/flush.c + src/fsctl.c + src/linux.c + src/lock.c + src/memory.c + src/misc.c + src/nls.c + src/pnp.c + src/rbtree.c + src/read.c + src/shutdown.c + src/volinfo.c + src/write.c + inc/ext2fs.h) + +add_library(ext2fs SHARED ${SOURCE} ext2fs.rc) + +if(NOT MSVC) + add_target_compile_flags(ext2fs "-Wno-pointer-sign -Wno-unused-function") + if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang") + replace_compile_flags("-Werror" " ") + add_target_compile_flags(ext2fs "-Wno-unused-but-set-variable -Wno-unused-variable -Wno-missing-braces") + endif() +else() + #disable warnings: "unreferenced local variable", "initialized, but not used variable", "benign include" + replace_compile_flags("/we\"4189\"" " ") + add_target_compile_flags(ext2fs "/wd\"4189\" /wd\"4142\" /wd\"4101\"") +endif() + +target_link_libraries(ext2fs memcmp ${PSEH_LIB}) +add_definitions(-D__KERNEL__ -D_X86_) +set_module_type(ext2fs kernelmodedriver) +add_importlibs(ext2fs ntoskrnl hal) +add_pch(ext2fs inc/ext2fs.h SOURCE) +add_cd_file(TARGET ext2fs DESTINATION reactos/system32/drivers NO_CAB FOR all) diff -prudN ext2_new1/ext2fs.rc ext2_new/ext2fs.rc --- ext2_new1/ext2fs.rc 1970-01-01 02:00:00.000000000 +0200 +++ ext2_new/ext2fs.rc 2014-01-27 15:10:40.454388900 +0200 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "Linux ext2 IFS Driver" +#define REACTOS_STR_INTERNAL_NAME "ext2fs" +#define REACTOS_STR_ORIGINAL_FILENAME "ext2fs.sys" +#include diff -prudN ext2_new1/inc/ext2fs.h ext2_new/inc/ext2fs.h --- ext2_new1/inc/ext2fs.h 2015-06-09 19:37:55.474905500 +0300 +++ ext2_new/inc/ext2fs.h 2015-10-06 10:09:55.432922000 +0300 @@ -14,6 +14,10 @@ /* INCLUDES *************************************************************/ #include #include +#ifdef __REACTOS__ +#include +#include +#endif #include "stdio.h" #include #include @@ -28,12 +32,14 @@ # define EXT2_DEBUG 0 #endif -#if EXT2_DEBUG -#if _X86_ -#define DbgBreak() __asm int 3 -#else +#define EXT_DEBUG_BREAKPOINT FALSE + +#if EXT2_DEBUG && EXT_DEBUG_BREAKPOINT +//#if _X86_ +//#define DbgBreak() __asm int 3 +//#else #define DbgBreak() KdBreakPoint() -#endif +//#endif #else #define DbgBreak() #endif @@ -186,9 +192,12 @@ _InterlockedXor ( #if EXT2_DEBUG -#define SetLongFlag(_F,_SF) Ext2SetFlag(&(_F), (ULONG)(_SF)) -#define ClearLongFlag(_F,_SF) Ext2ClearFlag(&(_F), (ULONG)(_SF)) +#define SetLongFlag(_F,_SF) Ext2SetFlag((PULONG)&(_F), (ULONG)(_SF)) +#define ClearLongFlag(_F,_SF) Ext2ClearFlag((PULONG)&(_F), (ULONG)(_SF)) +#ifdef __REACTOS__ +static +#endif __inline VOID Ext2SetFlag(PULONG Flags, ULONG FlagBit) @@ -197,6 +206,9 @@ Ext2SetFlag(PULONG Flags, ULONG FlagBit) ASSERT(*Flags == (_ret | FlagBit)); } +#ifdef __REACTOS__ +static +#endif __inline VOID Ext2ClearFlag(PULONG Flags, ULONG FlagBit) @@ -877,6 +889,9 @@ struct _EXT2_MCB { #define Ext2ReferXcb(_C) InterlockedIncrement(_C) #define Ext2DerefXcb(_C) DEC_OBJ_CNT(_C) +#ifdef __REACTOS__ +static +#endif __inline ULONG DEC_OBJ_CNT(PULONG _C) { if (*_C > 0) { return InterlockedDecrement(_C); @@ -1042,6 +1057,9 @@ typedef struct _EXT2_EXTENT { // memory allocation statistics // +#ifdef __REACTOS__ +static +#endif __inline VOID Ext2TraceMemory(BOOLEAN _n, int _i, PVOID _p, LONG _s) @@ -1056,6 +1074,9 @@ Ext2TraceMemory(BOOLEAN _n, int _i, PVOI } } +#ifdef __REACTOS__ +static +#endif __inline VOID Ext2TraceIrpContext(BOOLEAN _n, PEXT2_IRP_CONTEXT IrpContext) @@ -1165,47 +1186,47 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte VOID Ext2QueueCloseRequest (IN PEXT2_IRP_CONTEXT IrpContext); -VOID +VOID NTAPI Ext2DeQueueCloseRequest (IN PVOID Context); // // Cmcb.c // -BOOLEAN +BOOLEAN NTAPI Ext2AcquireForLazyWrite ( IN PVOID Context, IN BOOLEAN Wait ); -VOID +VOID NTAPI Ext2ReleaseFromLazyWrite (IN PVOID Context); -BOOLEAN +BOOLEAN NTAPI Ext2AcquireForReadAhead ( IN PVOID Context, IN BOOLEAN Wait ); -VOID +VOID NTAPI Ext2ReleaseFromReadAhead (IN PVOID Context); -BOOLEAN +BOOLEAN NTAPI Ext2NoOpAcquire ( IN PVOID Fcb, IN BOOLEAN Wait ); -VOID +VOID NTAPI Ext2NoOpRelease (IN PVOID Fcb); -VOID +VOID NTAPI Ext2AcquireForCreateSection ( IN PFILE_OBJECT FileObject ); -VOID +VOID NTAPI Ext2ReleaseForCreateSection ( IN PFILE_OBJECT FileObject ); -NTSTATUS +NTSTATUS NTAPI Ext2AcquireFileForModWrite ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER EndingOffset, @@ -1213,20 +1234,20 @@ Ext2AcquireFileForModWrite ( IN PDEVICE_OBJECT DeviceObject ); -NTSTATUS +NTSTATUS NTAPI Ext2ReleaseFileForModWrite ( IN PFILE_OBJECT FileObject, IN PERESOURCE ResourceToRelease, IN PDEVICE_OBJECT DeviceObject ); -NTSTATUS +NTSTATUS NTAPI Ext2AcquireFileForCcFlush ( IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject ); -NTSTATUS +NTSTATUS NTAPI Ext2ReleaseFileForCcFlush ( IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject @@ -1336,7 +1357,13 @@ Ext2SupersedeOrOverWriteFile( #define DL_PNP 0x00010000 /* pnp */ #define DL_IO 0x00020000 /* file i/o */ -#define DL_DEFAULT (DL_ERR|DL_VIT) +#define DL_ALL (DL_ERR|DL_VIT|DL_DBG|DL_INF|DL_FUN|DL_LOW|DL_REN|DL_RES|DL_BLK|DL_CP|DL_EXT|DL_MAP|DL_JNL|DL_HTI|DL_WRN|DL_BH|DL_PNP|DL_IO) + +#if EXT2_DEBUG && defined(__REACTOS__) + #define DL_DEFAULT (DL_ERR|DL_VIT|DL_DBG|DL_INF|DL_FUN|DL_LOW|DL_WRN) +#else + #define DL_DEFAULT (DL_ERR|DL_VIT) +#endif #if EXT2_DEBUG extern ULONG DebugFilter; @@ -1513,13 +1540,13 @@ Ext2IsDirectoryEmpty ( // Dispatch.c // -VOID +VOID NTAPI Ext2OplockComplete ( IN PVOID Context, IN PIRP Irp ); -VOID +VOID NTAPI Ext2LockIrp ( IN PVOID Context, IN PIRP Irp @@ -1528,13 +1555,13 @@ Ext2LockIrp ( NTSTATUS Ext2QueueRequest (IN PEXT2_IRP_CONTEXT IrpContext); -VOID +VOID NTAPI Ext2DeQueueRequest (IN PVOID Context); NTSTATUS Ext2DispatchRequest (IN PEXT2_IRP_CONTEXT IrpContext); -NTSTATUS +NTSTATUS NTAPI Ext2BuildRequest ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp @@ -1918,7 +1945,7 @@ Ext2IsFastIoPossible( IN PEXT2_FCB Fcb ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoCheckIfPossible ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -1931,7 +1958,7 @@ Ext2FastIoCheckIfPossible ( ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoRead (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -1941,7 +1968,7 @@ Ext2FastIoRead (IN PFILE_OBJECT FileObje OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoWrite ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -1952,7 +1979,7 @@ Ext2FastIoWrite ( OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryBasicInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -1960,7 +1987,7 @@ Ext2FastIoQueryBasicInfo ( OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryStandardInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -1968,7 +1995,7 @@ Ext2FastIoQueryStandardInfo ( OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoLock ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -1981,7 +2008,7 @@ Ext2FastIoLock ( IN PDEVICE_OBJECT DeviceObject ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockSingle ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -1992,7 +2019,7 @@ Ext2FastIoUnlockSingle ( IN PDEVICE_OBJECT DeviceObject ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockAll ( IN PFILE_OBJECT FileObject, IN PEPROCESS Process, @@ -2000,7 +2027,7 @@ Ext2FastIoUnlockAll ( IN PDEVICE_OBJECT DeviceObject ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockAllByKey ( IN PFILE_OBJECT FileObject, IN PEPROCESS Process, @@ -2010,7 +2037,7 @@ Ext2FastIoUnlockAllByKey ( ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryNetworkOpenInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -2018,7 +2045,7 @@ Ext2FastIoQueryNetworkOpenInfo ( OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject ); -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryNetworkOpenInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -2262,10 +2289,13 @@ struct buffer_head *ext3_bread(struct ex int add_dirent_to_buf(struct ext2_icb *icb, struct dentry *dentry, struct inode *inode, struct ext3_dir_entry_2 *de, struct buffer_head *bh); + +#if !defined(__REACTOS__) || defined(_MSC_VER) struct ext3_dir_entry_2 * do_split(struct ext2_icb *icb, struct inode *dir, struct buffer_head **bh,struct dx_frame *frame, struct dx_hash_info *hinfo, int *error); +#endif int ext3_add_entry(struct ext2_icb *icb, struct dentry *dentry, struct inode *inode); @@ -2282,7 +2312,7 @@ int ext3_is_dir_empty(struct ext2_icb *i BOOLEAN Ext2QueryGlobalParameters (IN PUNICODE_STRING RegistryPath); -VOID +VOID NTAPI DriverUnload (IN PDRIVER_OBJECT DriverObject); // @@ -2640,7 +2670,7 @@ Ext2FirstUnusedMcb( ULONG Number ); -VOID +VOID NTAPI Ext2ReaperThread( PVOID Context ); diff -prudN ext2_new1/inc/linux/errno.h ext2_new/inc/linux/errno.h --- ext2_new1/inc/linux/errno.h 2015-06-09 19:36:45.260241300 +0300 +++ ext2_new/inc/linux/errno.h 2015-09-29 09:46:52.485563800 +0300 @@ -3,6 +3,7 @@ #include +#ifndef __REACTOS__ #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ @@ -73,7 +74,9 @@ #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 72 /* Multihop attempted */ #define EDOTDOT 73 /* RFS specific error */ +#endif #define EBADMSG 74 /* Not a data message */ +#ifndef __REACTOS__ #define EOVERFLOW 75 /* Value too large for defined data type */ #define ENOTUNIQ 76 /* Name not unique on network */ #define EBADFD 77 /* File descriptor in bad state */ @@ -88,14 +91,19 @@ #define EUSERS 87 /* Too many users */ #define ENOTSOCK 88 /* Socket operation on non-socket */ #define EDESTADDRREQ 89 /* Destination address required */ +#endif #define EMSGSIZE 90 /* Message too long */ +#ifndef __REACTOS__ #define EPROTOTYPE 91 /* Protocol wrong type for socket */ #define ENOPROTOOPT 92 /* Protocol not available */ #define EPROTONOSUPPORT 93 /* Protocol not supported */ #define ESOCKTNOSUPPORT 94 /* Socket type not supported */ +#endif #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ +#ifndef __REACTOS__ #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define EAFNOSUPPORT 97 /* Address family not supported by protocol */ +#endif #define EADDRINUSE 98 /* Address already in use */ #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ #define ENETDOWN 100 /* Network is down */ diff -prudN ext2_new1/inc/linux/Ext2_fs.h ext2_new/inc/linux/Ext2_fs.h --- ext2_new1/inc/linux/Ext2_fs.h 2015-06-09 19:36:45.248233200 +0300 +++ ext2_new/inc/linux/Ext2_fs.h 2015-09-29 09:48:09.627277200 +0300 @@ -609,7 +609,9 @@ extern void ext2_put_super (struct super extern void ext2_write_super (struct super_block *); extern int ext2_remount (struct super_block *, int *, char *); extern struct super_block * ext2_read_super (struct super_block *,void *,int); +#ifndef __REACTOS__ extern int ext2_statfs (struct super_block *, struct statfs *); +#endif /* * Inodes and files operations diff -prudN ext2_new1/inc/linux/jbd.h ext2_new/inc/linux/jbd.h --- ext2_new1/inc/linux/jbd.h 2015-06-09 19:36:45.282258100 +0300 +++ ext2_new/inc/linux/jbd.h 2015-10-06 10:18:30.609434500 +0300 @@ -893,7 +893,9 @@ static inline handle_t *journal_current_ { return NULL; /* return current->journal_info; */ +#ifdef _MSC_VER #pragma message("WARNINGS: journal_current_handle NOT implemented") +#endif } /* The journaling code user interface: diff -prudN ext2_new1/inc/linux/module.h ext2_new/inc/linux/module.h --- ext2_new1/inc/linux/module.h 2015-06-09 19:36:45.296265300 +0300 +++ ext2_new/inc/linux/module.h 2015-09-29 17:22:32.411395800 +0300 @@ -59,7 +59,7 @@ extern "C" { #define RtlUlongByteSwap(_x) _byteswap_ulong((_x)) #define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) -#else +#elif !defined(__REACTOS__) USHORT FASTCALL @@ -429,10 +429,10 @@ extern struct task_struct *current; // -static inline cond_resched() { +static inline int cond_resched() { return FALSE; } -static inline need_resched() { +static inline int need_resched() { return FALSE; } @@ -638,7 +638,9 @@ extern void free_pages(unsigned long add #define __free_page(page) __free_pages((page), 0) #define free_page(addr) free_pages((addr),0) +#ifndef __REACTOS__ extern void truncate_inode_pages(struct address_space *, loff_t); +#endif #define __GFP_HIGHMEM 0x02 @@ -692,6 +694,9 @@ enum bh_state_bits { #define PAGE_CACHE_SHIFT (12) #define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512) +#ifdef __REACTOS__ +struct buffer_head; +#endif typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate); /* @@ -811,7 +816,9 @@ void mark_buffer_dirty_inode(struct buff int inode_has_buffers(struct inode *); void invalidate_inode_buffers(struct inode *); int remove_inode_buffers(struct inode *inode); +#ifndef __REACTOS__ int sync_mapping_buffers(struct address_space *mapping); +#endif void unmap_underlying_metadata(struct block_device *bdev, sector_t block); void mark_buffer_async_write(struct buffer_head *bh); diff -prudN ext2_new1/inc/linux/types.h ext2_new/inc/linux/types.h --- ext2_new1/inc/linux/types.h 2015-06-09 19:36:45.318280000 +0300 +++ ext2_new/inc/linux/types.h 2015-09-30 11:09:26.057316600 +0300 @@ -27,14 +27,14 @@ typedef signed __int64 __s64; typedef unsigned __int64 __u64; -#ifdef _MSC_VER +typedef __s8 s8; +typedef __u8 u8; typedef __s16 s16; typedef __u16 u16; typedef __s32 s32; typedef __u32 u32; typedef __s64 s64; typedef __u64 u64; -#endif #define __le16 u16 #define __le32 u32 @@ -45,7 +45,9 @@ typedef __u64 u64; // // gcc special keyworks // -#define __attribute__(x) +#if defined(_MSC_VER) || !defined(__REACTOS__) + #define __attribute__(x) +#endif #define __bitwise #define __releases(x) diff -prudN ext2_new1/src/block.c ext2_new/src/block.c --- ext2_new1/src/block.c 2015-06-09 19:36:45.175184700 +0300 +++ ext2_new/src/block.c 2015-09-30 11:23:19.476684200 +0300 @@ -17,20 +17,20 @@ extern PEXT2_GLOBAL Ext2Global; /* DEFINITIONS *************************************************************/ -NTSTATUS +NTSTATUS NTAPI Ext2ReadWriteBlockSyncCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ); -NTSTATUS +NTSTATUS NTAPI Ext2ReadWriteBlockAsyncCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context ); -NTSTATUS +NTSTATUS NTAPI Ext2MediaEjectControlCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -64,19 +64,19 @@ Ext2CreateMdl ( if (Mdl == NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; } else { - __try { + _SEH2_TRY { if (bPaged) { MmProbeAndLockPages(Mdl, KernelMode, Operation); } else { MmBuildMdlForNonPagedPool (Mdl); } Status = STATUS_SUCCESS; - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { IoFreeMdl (Mdl); Mdl = NULL; DbgBreak(); Status = STATUS_INVALID_USER_BUFFER; - } + } _SEH2_END; } return Mdl; } @@ -114,18 +114,18 @@ Ext2LockUserBuffer (IN PIRP Irp, return STATUS_INSUFFICIENT_RESOURCES; } - __try { + _SEH2_TRY { MmProbeAndLockPages(Irp->MdlAddress, Irp->RequestorMode, Operation); Status = STATUS_SUCCESS; - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); IoFreeMdl(Irp->MdlAddress); Irp->MdlAddress = NULL; Status = STATUS_INVALID_USER_BUFFER; - } + } _SEH2_END; return Status; } @@ -148,7 +148,7 @@ Ext2GetUserBuffer (IN PIRP Irp ) } } -NTSTATUS +NTSTATUS NTAPI Ext2ReadWriteBlockSyncCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -181,7 +181,7 @@ Ext2ReadWriteBlockSyncCompletionRoutine return STATUS_MORE_PROCESSING_REQUIRED; } -NTSTATUS +NTSTATUS NTAPI Ext2ReadWriteBlockAsyncCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -257,14 +257,14 @@ Ext2ReadWriteBlocks( ASSERT(MasterIrp); - __try { + _SEH2_TRY { pContext = Ext2AllocatePool(NonPagedPool, sizeof(EXT2_RW_CONTEXT), EXT2_RWC_MAGIC); if (!pContext) { DEBUG(DL_ERR, ( "Ex2ReadWriteBlocks: failed to allocate pContext.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_RW_CONTEXT, pContext, sizeof(EXT2_RW_CONTEXT)); @@ -334,7 +334,7 @@ Ext2ReadWriteBlocks( if (!Irp) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } Mdl = IoAllocateMdl( (PCHAR)MasterIrp->UserBuffer + @@ -346,7 +346,7 @@ Ext2ReadWriteBlocks( if (!Mdl) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } IoBuildPartialMdl( MasterIrp->MdlAddress, @@ -417,7 +417,7 @@ Ext2ReadWriteBlocks( bMasterCompleted = TRUE; } - } __finally { + } _SEH2_FINALLY { for (Extent = Chain; Extent != NULL; Extent = Extent->Next) { if (Extent->Irp != NULL ) { @@ -451,7 +451,7 @@ Ext2ReadWriteBlocks( } } } - } + } _SEH2_END; return Status; } @@ -476,13 +476,13 @@ Ext2ReadSync( ASSERT(Vcb->TargetDeviceObject != NULL); ASSERT(Buffer != NULL); - __try { + _SEH2_TRY { Event = Ext2AllocatePool(NonPagedPool, sizeof(KEVENT), 'EK2E'); if (NULL == Event) { DEBUG(DL_ERR, ( "Ex2ReadSync: failed to allocate Event.\n")); - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_DISK_EVENT, Event, sizeof(KEVENT)); @@ -501,7 +501,7 @@ Ext2ReadSync( if (!Irp) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } if (bVerify) { @@ -523,13 +523,13 @@ Ext2ReadSync( Status = IoStatus.Status; } - } __finally { + } _SEH2_FINALLY { if (Event) { Ext2FreePool(Event, 'EK2E'); DEC_MEM_COUNT(PS_DISK_EVENT, Event, sizeof(KEVENT)); } - } + } _SEH2_END; return Status; } @@ -642,7 +642,7 @@ Ext2DiskIoControl ( } -NTSTATUS +NTSTATUS NTAPI Ext2MediaEjectControlCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, diff -prudN ext2_new1/src/cleanup.c ext2_new/src/cleanup.c --- ext2_new1/src/cleanup.c 2015-06-09 19:36:45.179187000 +0300 +++ ext2_new/src/cleanup.c 2015-09-29 19:51:32.268292100 +0300 @@ -34,7 +34,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon BOOLEAN FcbResourceAcquired = FALSE; BOOLEAN FcbPagingIoResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -43,7 +43,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon DeviceObject = IrpContext->DeviceObject; if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } Irp = IrpContext->Irp; @@ -54,7 +54,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon if (!IsVcbInited(Vcb)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; @@ -62,14 +62,14 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon if (!Fcb || (Fcb->Identifier.Type != EXT2VCB && Fcb->Identifier.Type != EXT2FCB)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } Mcb = Fcb->Mcb; Ccb = (PEXT2_CCB) FileObject->FsContext2; if (IsFlagOn(FileObject->Flags, FO_CLEANUP_COMPLETE)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } VcbResourceAcquired = @@ -96,7 +96,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon IoRemoveShareAccess(FileObject, &Vcb->ShareAccess); Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -108,12 +108,12 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon !IsVcbReadOnly(Vcb) ) { Status = Ext2FlushFile(IrpContext, Fcb, Ccb); } - __leave; + _SEH2_LEAVE; } if (Ccb == NULL) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (IsDirectory(Fcb)) { @@ -361,7 +361,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon SetFlag(FileObject->Flags, FO_CLEANUP_COMPLETE); } - } __finally { + } _SEH2_FINALLY { if (FcbPagingIoResourceAcquired) { ExReleaseResourceLite(&Fcb->PagingIoResource); @@ -383,7 +383,7 @@ Ext2Cleanup (IN PEXT2_IRP_CONTEXT IrpCon Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/close.c ext2_new/src/close.c --- ext2_new1/src/close.c 2015-06-09 19:36:45.184190500 +0300 +++ ext2_new/src/close.c 2015-09-30 11:25:25.038239100 +0300 @@ -37,7 +37,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte BOOLEAN bBeingClosed = FALSE; BOOLEAN bSkipLeave = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -47,7 +47,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_SUCCESS; Vcb = NULL; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -62,7 +62,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte Vcb->OpenHandleCount, Vcb->ReferenceCount)); Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } VcbResourceAcquired = TRUE; @@ -86,7 +86,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte Fcb = (PEXT2_FCB) FileObject->FsContext; if (!Fcb) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } ASSERT(Fcb != NULL); Ccb = (PEXT2_CCB) FileObject->FsContext2; @@ -108,19 +108,19 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte } Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if ( Fcb->Identifier.Type != EXT2FCB || Fcb->Identifier.Size != sizeof(EXT2_FCB)) { - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite( &Fcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -128,7 +128,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte if (!Ccb) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } ASSERT((Ccb->Identifier.Type == EXT2CCB) && @@ -138,7 +138,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte SetFlag(IrpContext->Flags, IRP_CONTEXT_FLAG_FILE_BUSY); DEBUG(DL_WRN, ( "Ext2Close: busy bit set: %wZ\n", &Fcb->Mcb->FullName )); Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } DEBUG(DL_INF, ( "Ext2Close: Fcb = %p OpenHandleCount= %u ReferenceCount=%u NonCachedCount=%u %wZ\n", @@ -174,7 +174,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte Ext2DerefXcb(&Vcb->ReferenceCount); Status = STATUS_SUCCESS; - } __finally { + } _SEH2_FINALLY { if (NT_SUCCESS(Status) && Vcb != NULL && IsVcbInited(Vcb)) { /* for Ext2Fsd driver open/close, Vcb is NULL */ @@ -216,7 +216,7 @@ Ext2Close (IN PEXT2_IRP_CONTEXT IrpConte } } } - } + } _SEH2_END; return Status; } @@ -253,7 +253,7 @@ Ext2QueueCloseRequest (IN PEXT2_IRP_CONT ExQueueWorkItem(&IrpContext->WorkQueueItem, DelayedWorkQueue); } -VOID +VOID NTAPI Ext2DeQueueCloseRequest (IN PVOID Context) { PEXT2_IRP_CONTEXT IrpContext; @@ -263,20 +263,20 @@ Ext2DeQueueCloseRequest (IN PVOID Contex ASSERT((IrpContext->Identifier.Type == EXT2ICX) && (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); - __try { + _SEH2_TRY { - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); Ext2Close(IrpContext); - } __except (Ext2ExceptionFilter(IrpContext, GetExceptionInformation())) { + } _SEH2_EXCEPT (Ext2ExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) { Ext2ExceptionHandler(IrpContext); - } + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; } diff -prudN ext2_new1/src/cmcb.c ext2_new/src/cmcb.c --- ext2_new1/src/cmcb.c 2015-06-09 19:36:45.186192500 +0300 +++ ext2_new/src/cmcb.c 2015-09-30 11:21:40.062743800 +0300 @@ -19,7 +19,7 @@ extern PEXT2_GLOBAL Ext2Global; #define CMCB_DEBUG_LEVEL DL_NVR -BOOLEAN +BOOLEAN NTAPI Ext2AcquireForLazyWrite ( IN PVOID Context, IN BOOLEAN Wait) @@ -53,7 +53,7 @@ Ext2AcquireForLazyWrite ( return TRUE; } -VOID +VOID NTAPI Ext2ReleaseFromLazyWrite (IN PVOID Context) { // @@ -80,7 +80,7 @@ Ext2ReleaseFromLazyWrite (IN PVOID Conte IoSetTopLevelIrp( NULL ); } -BOOLEAN +BOOLEAN NTAPI Ext2AcquireForReadAhead (IN PVOID Context, IN BOOLEAN Wait) { @@ -107,7 +107,7 @@ Ext2AcquireForReadAhead (IN PVOID Con return TRUE; } -VOID +VOID NTAPI Ext2ReleaseFromReadAhead (IN PVOID Context) { PEXT2_FCB Fcb; @@ -127,7 +127,7 @@ Ext2ReleaseFromReadAhead (IN PVOID Conte ExReleaseResourceLite(&Fcb->MainResource); } -BOOLEAN +BOOLEAN NTAPI Ext2NoOpAcquire ( IN PVOID Fcb, IN BOOLEAN Wait @@ -138,7 +138,7 @@ Ext2NoOpAcquire ( return TRUE; } -VOID +VOID NTAPI Ext2NoOpRelease ( IN PVOID Fcb ) @@ -150,7 +150,7 @@ Ext2NoOpRelease ( } -VOID +VOID NTAPI Ext2AcquireForCreateSection ( IN PFILE_OBJECT FileObject ) @@ -165,7 +165,7 @@ Ext2AcquireForCreateSection ( DEBUG(CMCB_DEBUG_LEVEL, ("Ext2AcquireForCreateSection: Fcb=%p\n", Fcb)); } -VOID +VOID NTAPI Ext2ReleaseForCreateSection ( IN PFILE_OBJECT FileObject ) @@ -181,7 +181,7 @@ Ext2ReleaseForCreateSection ( } -NTSTATUS +NTSTATUS NTAPI Ext2AcquireFileForModWrite ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER EndingOffset, @@ -211,7 +211,7 @@ Ext2AcquireFileForModWrite ( return (ResourceAcquired ? STATUS_SUCCESS : STATUS_CANT_WAIT); } -NTSTATUS +NTSTATUS NTAPI Ext2ReleaseFileForModWrite ( IN PFILE_OBJECT FileObject, IN PERESOURCE ResourceToRelease, @@ -233,7 +233,7 @@ Ext2ReleaseFileForModWrite ( return STATUS_SUCCESS; } -NTSTATUS +NTSTATUS NTAPI Ext2AcquireFileForCcFlush ( IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject @@ -250,7 +250,7 @@ Ext2AcquireFileForCcFlush ( return STATUS_SUCCESS; } -NTSTATUS +NTSTATUS NTAPI Ext2ReleaseFileForCcFlush ( IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject diff -prudN ext2_new1/src/create.c ext2_new/src/create.c --- ext2_new1/src/create.c 2015-06-09 19:36:45.188194200 +0300 +++ ext2_new/src/create.c 2015-09-29 19:51:53.151380200 +0300 @@ -81,7 +81,7 @@ Ext2FollowLink ( USHORT i; - __try { + _SEH2_TRY { RtlZeroMemory(&UniName, sizeof(UNICODE_STRING)); RtlZeroMemory(&OemName, sizeof(OEM_STRING)); @@ -89,7 +89,7 @@ Ext2FollowLink ( /* exit if we jump into a possible symlink forever loop */ if ((Linkdep + 1) > EXT2_MAX_NESTED_LINKS || IoGetRemainingStackSize() < 1024) { - __leave; + _SEH2_LEAVE; } /* read the symlink target path */ @@ -108,7 +108,7 @@ Ext2FollowLink ( 'NL2E'); if (OemName.Buffer == NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } bOemBuffer = TRUE; RtlZeroMemory(OemName.Buffer, OemName.MaximumLength); @@ -123,7 +123,7 @@ Ext2FollowLink ( FALSE, NULL); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } } @@ -138,7 +138,7 @@ Ext2FollowLink ( UniName.MaximumLength = (USHORT)Ext2OEMToUnicodeSize(Vcb, &OemName); if (UniName.MaximumLength <= 0) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } UniName.MaximumLength += 2; @@ -147,13 +147,13 @@ Ext2FollowLink ( 'NL2E'); if (UniName.Buffer == NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } RtlZeroMemory(UniName.Buffer, UniName.MaximumLength); Status = Ext2OEMToUnicode(Vcb, &UniName, &OemName); if (!NT_SUCCESS(Status)) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } /* search the real target */ @@ -205,7 +205,7 @@ Ext2FollowLink ( Mcb->FileAttr = Target->FileAttr; } - } __finally { + } _SEH2_FINALLY { if (bOemBuffer) { Ext2FreePool(OemName.Buffer, 'NL2E'); @@ -214,7 +214,7 @@ Ext2FollowLink ( if (UniName.Buffer) { Ext2FreePool(UniName.Buffer, 'NL2E'); } - } + } _SEH2_END; return Status; } @@ -290,7 +290,7 @@ Ext2LookupFile ( BOOLEAN bDirectory = FALSE; BOOLEAN LockAcquired = FALSE; - __try { + _SEH2_TRY { ExAcquireResourceExclusiveLite(&Vcb->McbLock, TRUE); LockAcquired = TRUE; @@ -311,7 +311,7 @@ Ext2LookupFile ( /* make sure the parent is NULL */ if (!IsMcbDirectory(Parent)) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } /* use symlink's target as parent directory */ @@ -320,13 +320,13 @@ Ext2LookupFile ( ASSERT(!IsMcbSymLink(Parent)); if (IsFileDeleted(Parent)) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } } if (NULL == Parent) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } /* default is the parent Mcb*/ @@ -338,7 +338,7 @@ Ext2LookupFile ( if ( (End == 0) || (End == 1 && FullName->Buffer[0] == L'\\')) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } /* is a directory expected ? */ @@ -526,7 +526,7 @@ Ext2LookupFile ( } } - } __finally { + } _SEH2_FINALLY { if (de) { Ext2FreeEntry(de); @@ -548,7 +548,7 @@ Ext2LookupFile ( if (LockAcquired) { ExReleaseResourceLite(&Vcb->McbLock); } - } + } _SEH2_END; return Status; } @@ -572,7 +572,7 @@ Ext2ScanDir ( DEBUG(DL_RES, ("Ext2ScanDir: %wZ\\%wZ\n", &Parent->FullName, FileName)); - __try { + _SEH2_TRY { /* grab parent's reference first */ Ext2ReferMcb(Parent); @@ -580,7 +580,7 @@ Ext2ScanDir ( /* bad request ! Can a man be pregnant ? Maybe:) */ if (!IsMcbDirectory(Parent)) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } /* parent is a symlink ? */ @@ -593,7 +593,7 @@ Ext2ScanDir ( } else { DbgBreak(); Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } } @@ -601,7 +601,7 @@ Ext2ScanDir ( if (!de) { DEBUG(DL_ERR, ( "Ex2ScanDir: failed to allocate dentry.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } bh = ext3_find_entry(IrpContext, de, &dir_entry); @@ -611,7 +611,7 @@ Ext2ScanDir ( *dentry = de; } - } __finally { + } _SEH2_FINALLY { Ext2DerefMcb(Parent); @@ -622,7 +622,7 @@ Ext2ScanDir ( if (de) Ext2FreeEntry(de); } - } + } _SEH2_END; return Status; } @@ -689,7 +689,9 @@ Ext2CreateFile( BOOLEAN bParentFcbCreated = FALSE; +#ifndef __REACTOS__ BOOLEAN bDir = FALSE; +#endif BOOLEAN bFcbAllocated = FALSE; BOOLEAN bCreated = FALSE; BOOLEAN bMainResourceAcquired = FALSE; @@ -748,7 +750,7 @@ Ext2CreateFile( *OpPostIrp = FALSE; - __try { + _SEH2_TRY { FileName.MaximumLength = IrpSp->FileObject->FileName.MaximumLength; FileName.Length = IrpSp->FileObject->FileName.Length; @@ -773,7 +775,7 @@ Ext2CreateFile( } else { DbgBreak(); Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } @@ -786,7 +788,7 @@ Ext2CreateFile( if (!FileName.Buffer) { DEBUG(DL_ERR, ( "Ex2CreateFile: failed to allocate FileName.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_FILE_NAME, FileName.Buffer, FileName.MaximumLength); @@ -796,7 +798,7 @@ Ext2CreateFile( if (ParentFcb && FileName.Buffer[0] == L'\\') { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if ((FileName.Length > sizeof(WCHAR)) && @@ -818,13 +820,13 @@ Ext2CreateFile( (FileName.Buffer[0] == L'\\')) { Status = STATUS_OBJECT_NAME_INVALID; - __leave; + _SEH2_LEAVE; } } if (IsFlagOn(Options, FILE_OPEN_BY_FILE_ID)) { Status = STATUS_NOT_IMPLEMENTED; - __leave; + _SEH2_LEAVE; } DEBUG(DL_INF, ( "Ext2CreateFile: %wZ Paging=%d Option: %xh:" @@ -850,8 +852,9 @@ McbExisting: UNICODE_STRING RealName; UNICODE_STRING RemainName; +#ifndef __REACTOS__ LONG i = 0; - +#endif PathName = FileName; Mcb = NULL; @@ -867,7 +870,7 @@ McbExisting: if (!ParentMcb) { if (PathName.Buffer[0] != L'\\') { Status = STATUS_OBJECT_PATH_NOT_FOUND; - __leave; + _SEH2_LEAVE; } else { ParentMcb = Vcb->McbTree; Ext2ReferMcb(ParentMcb); @@ -881,7 +884,7 @@ Dissecting: if (((RemainName.Length != 0) && (RemainName.Buffer[0] == L'\\')) || (RealName.Length >= 256 * sizeof(WCHAR))) { Status = STATUS_OBJECT_NAME_INVALID; - __leave; + _SEH2_LEAVE; } if (RemainName.Length != 0) { @@ -904,7 +907,7 @@ Dissecting: if (Status == STATUS_NO_SUCH_FILE && RemainName.Length != 0) { Status = STATUS_OBJECT_PATH_NOT_FOUND; } - __leave; + _SEH2_LEAVE; } /* deref ParentMcb */ @@ -929,7 +932,7 @@ Dissecting: if ( FsRtlDoesNameContainWildCards(&RealName) || !Ext2IsNameValid(&RealName)) { Status = STATUS_OBJECT_NAME_INVALID; - __leave; + _SEH2_LEAVE; } /* clear BUSY bit from original ParentFcb */ @@ -943,7 +946,7 @@ Dissecting: ParentFcb = Ext2AllocateFcb(Vcb, ParentMcb); if (!ParentFcb) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } bParentFcbCreated = TRUE; Ext2ReferXcb(&ParentFcb->ReferenceCount); @@ -958,12 +961,12 @@ Dissecting: if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (!CanIWrite(Vcb) && Ext2IsOwnerReadOnly(ParentFcb->Mcb->Inode.i_mode)) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) { @@ -977,13 +980,13 @@ Dissecting: if (TemporaryFile) { DbgBreak(); Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } if (!ParentFcb) { Status = STATUS_OBJECT_PATH_NOT_FOUND; - __leave; + _SEH2_LEAVE; } /* allocate inode and construct entry for this file */ @@ -998,7 +1001,7 @@ Dissecting: if (!NT_SUCCESS(Status)) { DbgBreak(); - __leave; + _SEH2_LEAVE; } bCreated = TRUE; @@ -1021,12 +1024,12 @@ Dissecting: if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (!ParentFcb) { Status = STATUS_OBJECT_PATH_NOT_FOUND; - __leave; + _SEH2_LEAVE; } RtlZeroMemory( IrpSp->FileObject->FileName.Buffer, @@ -1047,7 +1050,7 @@ Dissecting: } else { Status = STATUS_OBJECT_NAME_NOT_FOUND; - __leave; + _SEH2_LEAVE; } } else { // File / Dir already exists. @@ -1069,7 +1072,7 @@ Dissecting: if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } Irp->IoStatus.Information = FILE_EXISTS; @@ -1094,7 +1097,7 @@ Dissecting: Irp->IoStatus.Information = FILE_EXISTS; Status = STATUS_OBJECT_NAME_COLLISION; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } /* directory forbits us to do the followings ... */ @@ -1105,13 +1108,13 @@ Dissecting: Status = STATUS_OBJECT_NAME_COLLISION; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } if (NonDirectoryFile) { Status = STATUS_FILE_IS_A_DIRECTORY; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } if (Mcb->Inode.i_ino == EXT2_ROOT_INO) { @@ -1120,7 +1123,7 @@ Dissecting: DbgBreak(); Status = STATUS_INVALID_PARAMETER; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } } @@ -1129,7 +1132,7 @@ Dissecting: if (DirectoryFile) { Status = STATUS_NOT_A_DIRECTORY;; Ext2DerefMcb(Mcb); - __leave; + _SEH2_LEAVE; } } @@ -1163,10 +1166,10 @@ Openit: if (BooleanFlagOn(DesiredAccess, FILE_WRITE_DATA | FILE_APPEND_DATA | FILE_ADD_SUBDIRECTORY | FILE_DELETE_CHILD)) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } else if (IsFlagOn(Options, FILE_DELETE_ON_CLOSE )) { Status = STATUS_CANNOT_DELETE; - __leave; + _SEH2_LEAVE; } } @@ -1212,13 +1215,13 @@ Openit: /* file delted ? */ if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } if (DeleteOnClose && NULL == SymLink) { Status = Ext2IsFileRemovable(IrpContext, Vcb, Fcb, Ccb); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } } @@ -1240,7 +1243,7 @@ Openit: if ( Status != STATUS_SUCCESS && Status != STATUS_OPLOCK_BREAK_IN_PROGRESS) { *OpPostIrp = TRUE; - __leave; + _SEH2_LEAVE; } } } @@ -1256,7 +1259,7 @@ Openit: Status = Ext2AddDotEntries(IrpContext, &ParentMcb->Inode, &Mcb->Inode); if (!NT_SUCCESS(Status)) { Ext2DeleteFile(IrpContext, Vcb, Fcb, Mcb); - __leave; + _SEH2_LEAVE; } } else { @@ -1265,7 +1268,7 @@ Openit: Ext2TotalBlocks(Vcb, &Irp->Overlay.AllocationSize, NULL)) { DbgBreak(); Status = STATUS_DISK_FULL; - __leave; + _SEH2_LEAVE; } /* disable data blocks allocation */ @@ -1284,7 +1287,7 @@ Openit: Fcb->Header.AllocationSize.QuadPart = 0; Ext2TruncateFile(IrpContext, Vcb, Fcb->Mcb, &Fcb->Header.AllocationSize); - __leave; + _SEH2_LEAVE; } } #endif @@ -1300,7 +1303,7 @@ Openit: if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) { @@ -1360,7 +1363,6 @@ Openit: // // check the oplock state of the file // - Status = FsRtlCheckOplock( &Fcb->Oplock, IrpContext->Irp, IrpContext, @@ -1370,7 +1372,7 @@ Openit: if ( Status != STATUS_SUCCESS && Status != STATUS_OPLOCK_BREAK_IN_PROGRESS) { *OpPostIrp = TRUE; - __leave; + _SEH2_LEAVE; } } } @@ -1384,7 +1386,7 @@ Openit: &(Fcb->ShareAccess), TRUE ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } } else { @@ -1400,7 +1402,7 @@ Openit: if (!Ccb) { Status = STATUS_INSUFFICIENT_RESOURCES; DbgBreak(); - __leave; + _SEH2_LEAVE; } if (DeleteOnClose) @@ -1466,7 +1468,7 @@ Openit: Status = DeleteOnClose ? STATUS_CANNOT_DELETE : STATUS_SHARING_VIOLATION; - __leave; + _SEH2_LEAVE; } } @@ -1476,18 +1478,18 @@ Openit: if (IsDirectory(Fcb)) { Status = STATUS_FILE_IS_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } if (SymLink != NULL) { DbgBreak(); Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(Vcb->Flags, VCB_WRITE_PROTECTED)) { @@ -1508,7 +1510,7 @@ Openit: if (!NT_SUCCESS(Status)) { DbgBreak(); - __leave; + _SEH2_LEAVE; } Ext2NotifyReportChange( @@ -1531,10 +1533,10 @@ Openit: } else { DbgBreak(); - __leave; + _SEH2_LEAVE; } - } __finally { + } _SEH2_FINALLY { if (ParentMcb) { @@ -1585,12 +1587,12 @@ Openit: LARGE_INTEGER Size; ExAcquireResourceExclusiveLite(&Fcb->PagingIoResource, TRUE); - __try { + _SEH2_TRY { Size.QuadPart = 0; Ext2TruncateFile(IrpContext, Vcb, Fcb->Mcb, &Size); - } __finally { + } _SEH2_FINALLY { ExReleaseResourceLite(&Fcb->PagingIoResource); - } + } _SEH2_END; } if (bCreated) { @@ -1627,7 +1629,7 @@ Openit: if (SymLink) { Ext2DerefMcb(SymLink); } - } + } _SEH2_END; return Status; } @@ -1772,7 +1774,7 @@ Ext2Create (IN PEXT2_IRP_CONTEXT IrpCont return Status; } - __try { + _SEH2_TRY { Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; ASSERT(Vcb->Identifier.Type == EXT2VCB); @@ -1785,13 +1787,13 @@ Ext2Create (IN PEXT2_IRP_CONTEXT IrpCont } else { Status = STATUS_VOLUME_DISMOUNTED; } - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite( &Vcb->MainResource, TRUE)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } VcbResourceAcquired = TRUE; @@ -1802,7 +1804,7 @@ Ext2Create (IN PEXT2_IRP_CONTEXT IrpCont if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { Status = STATUS_VOLUME_DISMOUNTED; } - __leave; + _SEH2_LEAVE; } if ( ((IrpSp->FileObject->FileName.Length == 0) && @@ -1814,7 +1816,7 @@ Ext2Create (IN PEXT2_IRP_CONTEXT IrpCont Status = Ext2CreateFile(IrpContext, Vcb, &PostIrp); } - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -1828,7 +1830,7 @@ Ext2Create (IN PEXT2_IRP_CONTEXT IrpCont Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/devctl.c ext2_new/src/devctl.c --- ext2_new1/src/devctl.c 2015-06-09 19:36:45.194197200 +0300 +++ ext2_new/src/devctl.c 2015-09-30 11:20:52.477985800 +0300 @@ -17,7 +17,7 @@ extern PEXT2_GLOBAL Ext2Global; /* DEFINITIONS *************************************************************/ -NTSTATUS +NTSTATUS NTAPI Ext2DeviceControlCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -38,7 +38,7 @@ Ext2DeviceControlCompletion ( #endif -NTSTATUS +NTSTATUS NTAPI Ext2DeviceControlCompletion ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -68,7 +68,7 @@ Ext2DeviceControlNormal (IN PEXT2_IRP_CO PDEVICE_OBJECT TargetDeviceObject; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -81,7 +81,7 @@ Ext2DeviceControlNormal (IN PEXT2_IRP_CO if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Irp = IrpContext->Irp; @@ -92,7 +92,7 @@ Ext2DeviceControlNormal (IN PEXT2_IRP_CO if (!((Vcb) && (Vcb->Identifier.Type == EXT2VCB) && (Vcb->Identifier.Size == sizeof(EXT2_VCB)))) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } TargetDeviceObject = Vcb->TargetDeviceObject; @@ -116,7 +116,7 @@ Ext2DeviceControlNormal (IN PEXT2_IRP_CO Status = IoCallDriver(TargetDeviceObject, Irp); - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { if (IrpContext) { @@ -127,7 +127,7 @@ Ext2DeviceControlNormal (IN PEXT2_IRP_CO Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -142,7 +142,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX NTSTATUS Status = STATUS_UNSUCCESSFUL; BOOLEAN GlobalDataResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -153,7 +153,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } ExAcquireResourceExclusiveLite( @@ -167,7 +167,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } { @@ -197,7 +197,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } IoUnregisterFileSystem(Ext2Global->DiskdevObject); @@ -208,7 +208,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX DEBUG(DL_INF, ( "Ext2PrepareToUnload: Driver is ready to unload.\n")); - } __finally { + } _SEH2_FINALLY { if (GlobalDataResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); @@ -217,7 +217,7 @@ Ext2PrepareToUnload (IN PEXT2_IRP_CONTEX if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -239,11 +239,11 @@ Ext2ProcessGlobalProperty( BOOLEAN GlobalDataResourceAcquired = FALSE; struct nls_table * PageTable = NULL; - __try { + _SEH2_TRY { if (Length < 8 || !IsFlagOn(Property->Flags, EXT2_FLAG_VP_SET_GLOBAL)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } /* query Ext2Fsd's version and built date/time*/ @@ -253,7 +253,7 @@ Ext2ProcessGlobalProperty( if (Length < sizeof(EXT2_VOLUME_PROPERTY_VERSION)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } RtlZeroMemory(&PVPV->Date[0], 0x20); @@ -262,28 +262,28 @@ Ext2ProcessGlobalProperty( strncpy(&PVPV->Version[0], gVersion, 0x1B); strncpy(&PVPV->Date[0], gDate, 0x1F); strncpy(&PVPV->Time[0], gTime, 0x1F); - __leave; + _SEH2_LEAVE; } /* must be property query/set commands */ if (Property->Command == APP_CMD_SET_PROPERTY) { if (Length < sizeof(EXT2_VOLUME_PROPERTY)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } else if (Property->Command == APP_CMD_SET_PROPERTY2) { if (Length < sizeof(EXT2_VOLUME_PROPERTY2)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } else if (Property->Command == APP_CMD_SET_PROPERTY3) { if (Length < sizeof(EXT2_VOLUME_PROPERTY3)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } else { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ExAcquireResourceExclusiveLite(&Ext2Global->Resource, TRUE); @@ -336,12 +336,12 @@ Ext2ProcessGlobalProperty( } } - } __finally { + } _SEH2_FINALLY { if (GlobalDataResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); } - } + } _SEH2_END; return Status; } @@ -358,7 +358,7 @@ Ext2ProcessVolumeProperty( BOOLEAN VcbResourceAcquired = FALSE; struct nls_table * PageTable = NULL; - __try { + _SEH2_TRY { ExAcquireResourceExclusiveLite(&Vcb->MainResource, TRUE); VcbResourceAcquired = TRUE; @@ -367,13 +367,13 @@ Ext2ProcessVolumeProperty( Property->Command == APP_CMD_QUERY_PROPERTY) { if (Length < sizeof(EXT2_VOLUME_PROPERTY)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } else if (Property->Command == APP_CMD_SET_PROPERTY2 || Property->Command == APP_CMD_QUERY_PROPERTY2) { if (Length < sizeof(EXT2_VOLUME_PROPERTY2)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } } @@ -421,14 +421,14 @@ Ext2ProcessVolumeProperty( if (Property->Command == APP_CMD_SET_PROPERTY2) { RtlZeroMemory(Vcb->sHidingPrefix, HIDINGPAT_LEN); - if (Vcb->bHidingPrefix = Property->bHidingPrefix) { + if ((Vcb->bHidingPrefix = Property->bHidingPrefix) != 0) { RtlCopyMemory( Vcb->sHidingPrefix, Property->sHidingPrefix, HIDINGPAT_LEN - 1); } RtlZeroMemory(Vcb->sHidingSuffix, HIDINGPAT_LEN); - if (Vcb->bHidingSuffix = Property->bHidingSuffix) { + if ((Vcb->bHidingSuffix = Property->bHidingSuffix) != 0) { RtlCopyMemory( Vcb->sHidingSuffix, Property->sHidingSuffix, HIDINGPAT_LEN - 1); @@ -464,7 +464,7 @@ Ext2ProcessVolumeProperty( Property->DrvLetter = Vcb->DrvLetter; - if (Property->bHidingPrefix = Vcb->bHidingPrefix) { + if ((Property->bHidingPrefix = Vcb->bHidingPrefix) != 0) { RtlCopyMemory( Property->sHidingPrefix, Vcb->sHidingPrefix, HIDINGPAT_LEN); @@ -473,7 +473,7 @@ Ext2ProcessVolumeProperty( HIDINGPAT_LEN); } - if (Property->bHidingSuffix = Vcb->bHidingSuffix) { + if ((Property->bHidingSuffix = Vcb->bHidingSuffix) != 0) { RtlCopyMemory( Property->sHidingSuffix, Vcb->sHidingSuffix, HIDINGPAT_LEN); @@ -490,12 +490,12 @@ Ext2ProcessVolumeProperty( break; } - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); } - } + } _SEH2_END; return Status; } @@ -511,7 +511,7 @@ Ext2ProcessUserProperty( PEXT2_VCB Vcb = NULL; PDEVICE_OBJECT DeviceObject = NULL; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -519,7 +519,7 @@ Ext2ProcessUserProperty( if (Property->Magic != EXT2_VOLUME_PROPERTY_MAGIC) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } DeviceObject = IrpContext->DeviceObject; @@ -530,7 +530,7 @@ Ext2ProcessUserProperty( if (!((Vcb) && (Vcb->Identifier.Type == EXT2VCB) && (Vcb->Identifier.Size == sizeof(EXT2_VCB)))) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Status = Ext2ProcessVolumeProperty(Vcb, Property, Length); } @@ -539,12 +539,12 @@ Ext2ProcessUserProperty( IrpContext->Irp->IoStatus.Information = Length; } - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -556,13 +556,16 @@ Ex2ProcessUserPerfStat( IN ULONG Length ) { + +#ifndef __REACTOS__ PEXT2_VCB Vcb = NULL; +#endif PDEVICE_OBJECT DeviceObject = NULL; BOOLEAN GlobalDataResourceAcquired = FALSE; NTSTATUS Status = STATUS_SUCCESS; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -573,18 +576,18 @@ Ex2ProcessUserPerfStat( if (QueryPerf->Magic != EXT2_QUERY_PERFSTAT_MAGIC) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (QueryPerf->Command != IOCTL_APP_QUERY_PERFSTAT) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (Length != EXT2_QUERY_PERFSTAT_SZV1 && Length != EXT2_QUERY_PERFSTAT_SZV2) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ExAcquireResourceSharedLite(&Ext2Global->Resource, TRUE); @@ -608,14 +611,14 @@ Ex2ProcessUserPerfStat( } else { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (NT_SUCCESS(Status)) { IrpContext->Irp->IoStatus.Information = Length; } - } __finally { + } _SEH2_FINALLY { if (GlobalDataResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); @@ -624,7 +627,7 @@ Ex2ProcessUserPerfStat( if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END return Status; } @@ -643,7 +646,7 @@ Ex2ProcessMountPoint( PDEVICE_OBJECT DeviceObject = NULL; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -652,13 +655,13 @@ Ex2ProcessMountPoint( DeviceObject = IrpContext->DeviceObject; if (!IsExt2FsDevice(DeviceObject)) { status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (Length != sizeof(EXT2_MOUNT_POINT) || MountPoint->Magic != EXT2_APP_MOUNTPOINT_MAGIC) { status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } RtlInitUnicodeString(&Link, Buffer); @@ -679,12 +682,12 @@ Ex2ProcessMountPoint( status = STATUS_INVALID_PARAMETER; } - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, status); } - } + } _SEH2_END; return status; } diff -prudN ext2_new1/src/dirctl.c ext2_new/src/dirctl.c --- ext2_new1/src/dirctl.c 2015-06-09 19:36:45.196198500 +0300 +++ ext2_new/src/dirctl.c 2015-09-17 15:24:40.286500800 +0300 @@ -89,7 +89,9 @@ Ext2ProcessEntry( ULONG InfoLength = 0; ULONG NameLength = 0; +#ifndef __REACTOS__ ULONG dwBytes = 0; +#endif LONGLONG FileSize = 0; LONGLONG AllocationSize; ULONG FileAttributes = 0; @@ -532,7 +534,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT EXT2_FILLDIR_CONTEXT fc = { 0 }; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -545,7 +547,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -555,24 +557,24 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (!IsMounted(Vcb)) { Status = STATUS_VOLUME_DISMOUNTED; - __leave; + _SEH2_LEAVE; } if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Mcb = Fcb->Mcb; if (NULL == Mcb) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT (!IsMcbSymLink(Mcb)); @@ -581,7 +583,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT // if (Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -589,12 +591,12 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (!IsMcbDirectory(Mcb)) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } if (IsFileDeleted(Mcb)) { Status = STATUS_NOT_A_DIRECTORY; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; @@ -643,19 +645,19 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (Buffer == NULL) { DbgBreak(); Status = STATUS_INVALID_USER_BUFFER; - __leave; + _SEH2_LEAVE; } if (!IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceSharedLite( &Fcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -680,7 +682,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (Ccb->DirectorySearchPattern.Buffer == NULL) { DEBUG(DL_ERR, ( "Ex2QueryDirectory: failed to allocate SerarchPattern.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT( PS_DIR_PATTERN, @@ -693,7 +695,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT FALSE); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } } @@ -715,7 +717,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (Ccb->DirectorySearchPattern.Buffer == NULL) { DEBUG(DL_ERR, ( "Ex2QueryDirectory: failed to allocate SerarchPattern (1st).\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT( PS_DIR_PATTERN, @@ -769,7 +771,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (Mcb->Inode.i_size <= Ccb->filp.f_pos) { Status = STATUS_NO_MORE_FILES; - __leave; + _SEH2_LEAVE; } pDir = Ext2AllocatePool( @@ -781,7 +783,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (!pDir) { DEBUG(DL_ERR, ( "Ex2QueryDirectory: failed to allocate pDir.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_DIR_ENTRY, pDir, sizeof(EXT2_DIR_ENTRY2)); @@ -807,7 +809,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (!NT_SUCCESS(Status)) { DbgBreak(); - __leave; + _SEH2_LEAVE; } if (pDir->rec_len == 0) { @@ -862,7 +864,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT DEBUG(DL_ERR, ( "Ex2QueryDirectory: failed to " "allocate InodeFileName.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_INODE_NAME, Unicode.Buffer, Unicode.MaximumLength); } @@ -874,7 +876,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT if (!NT_SUCCESS(Status)) { DEBUG(DL_ERR, ( "Ex2QueryDirectory: Ext2OEMtoUnicode failed with %xh.\n", Status)); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } DEBUG(DL_CP, ( "Ex2QueryDirectory: process inode: %xh / %wZ (%d).\n", @@ -922,7 +924,7 @@ Ext2QueryDirectory (IN PEXT2_IRP_CONTEXT Status = STATUS_SUCCESS; } } else { - __leave; + _SEH2_LEAVE; } break; } @@ -958,7 +960,7 @@ errorout: Status = STATUS_SUCCESS; } - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -994,7 +996,7 @@ errorout: Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -1018,7 +1020,7 @@ Ext2NotifyChangeDirectory ( BOOLEAN bFcbAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -1034,7 +1036,7 @@ Ext2NotifyChangeDirectory ( if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -1049,7 +1051,7 @@ Ext2NotifyChangeDirectory ( if (Fcb->Identifier.Type == EXT2VCB) { DbgBreak(); Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && (Fcb->Identifier.Size == sizeof(EXT2_FCB))); @@ -1062,7 +1064,7 @@ Ext2NotifyChangeDirectory ( if (!IsDirectory(Fcb)) { DbgBreak(); Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (ExAcquireResourceExclusiveLite( @@ -1071,7 +1073,7 @@ Ext2NotifyChangeDirectory ( bFcbAcquired = TRUE; } else { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } Irp = IrpContext->Irp; @@ -1094,7 +1096,7 @@ Ext2NotifyChangeDirectory ( if (FlagOn(Fcb->Flags, FCB_DELETE_PENDING)) { Status = STATUS_DELETE_PENDING; - __leave; + _SEH2_LEAVE; } FsRtlNotifyFullChangeDirectory( Vcb->NotifySync, @@ -1150,7 +1152,7 @@ Ext2NotifyChangeDirectory ( ); */ - } __finally { + } _SEH2_FINALLY { if (bFcbAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -1168,7 +1170,7 @@ Ext2NotifyChangeDirectory ( Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/dispatch.c ext2_new/src/dispatch.c --- ext2_new1/src/dispatch.c 2015-06-09 19:36:45.197199400 +0300 +++ ext2_new/src/dispatch.c 2015-09-30 11:26:11.908925700 +0300 @@ -37,7 +37,7 @@ extern PEXT2_GLOBAL Ext2Global; * N/A */ -VOID +VOID NTAPI Ext2OplockComplete ( IN PVOID Context, IN PIRP Irp @@ -82,7 +82,7 @@ Ext2OplockComplete ( * N/A */ -VOID +VOID NTAPI Ext2LockIrp ( IN PVOID Context, IN PIRP Irp @@ -174,7 +174,7 @@ Ext2QueueRequest (IN PEXT2_IRP_CONTEXT I } -VOID +VOID NTAPI Ext2DeQueueRequest (IN PVOID Context) { PEXT2_IRP_CONTEXT IrpContext; @@ -186,9 +186,9 @@ Ext2DeQueueRequest (IN PVOID Context) ASSERT((IrpContext->Identifier.Type == EXT2ICX) && (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); - __try { + _SEH2_TRY { - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); @@ -198,17 +198,17 @@ Ext2DeQueueRequest (IN PVOID Context) Ext2DispatchRequest(IrpContext); - } __except (Ext2ExceptionFilter(IrpContext, GetExceptionInformation())) { + } _SEH2_EXCEPT (Ext2ExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) { Ext2ExceptionHandler(IrpContext); - } + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { IoSetTopLevelIrp(NULL); FsRtlExitFileSystem(); - } + } _SEH2_END; } @@ -282,7 +282,7 @@ Ext2DispatchRequest (IN PEXT2_IRP_CONTEX } -NTSTATUS +NTSTATUS NTAPI Ext2BuildRequest (PDEVICE_OBJECT DeviceObject, PIRP Irp) { BOOLEAN AtIrqlPassiveLevel = FALSE; @@ -290,9 +290,9 @@ Ext2BuildRequest (PDEVICE_OBJECT Devic PEXT2_IRP_CONTEXT IrpContext = NULL; NTSTATUS Status = STATUS_UNSUCCESSFUL; - __try { + _SEH2_TRY { - __try { + _SEH2_TRY { #if EXT2_DEBUG Ext2DbgPrintCall(DeviceObject, Irp); @@ -328,12 +328,12 @@ Ext2BuildRequest (PDEVICE_OBJECT Devic Status = Ext2DispatchRequest(IrpContext); } - } __except (Ext2ExceptionFilter(IrpContext, GetExceptionInformation())) { + } _SEH2_EXCEPT (Ext2ExceptionFilter(IrpContext, _SEH2_GetExceptionInformation())) { Status = Ext2ExceptionHandler(IrpContext); - } + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { if (IsTopLevelIrp) { IoSetTopLevelIrp(NULL); @@ -342,7 +342,7 @@ Ext2BuildRequest (PDEVICE_OBJECT Devic if (AtIrqlPassiveLevel) { FsRtlExitFileSystem(); } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/ext2.rc ext2_new/src/ext2.rc --- ext2_new1/src/ext2.rc 1970-01-01 02:00:00.000000000 +0200 +++ ext2_new/src/ext2.rc 2015-09-29 17:36:34.685614800 +0300 @@ -0,0 +1,117 @@ +//Microsoft Developer Studio generated resource script. +// +#include "../inc/resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +/* REACTOS FIXME */ +/* #include "ntverp.h" */ + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +/* UTF-8 */ +#pragma code_page(65001) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\\inc\\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""ntverp.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,6,2,0 + PRODUCTVERSION 0,6,2,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x29L +#else + FILEFLAGS 0x28L +#endif + FILEOS 0x40004L + FILETYPE 0x3L + FILESUBTYPE 0x7L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "Ext2 File System Driver\0" + VALUE "CompanyName", "Purayidathil\0" + VALUE "FileDescription", "Ext2 File System Driver\0" + VALUE "FileVersion", "0, 6, 2, 0\0" + VALUE "InternalName", "ext2fs.sys\0" + VALUE "LegalCopyright", "Copyright © 2015 Matt Wu\0" + VALUE "LegalTrademarks", " - \0" + VALUE "OriginalFilename", "ext2fs.sys\0" + VALUE "PrivateBuild", " - \0" + VALUE "ProductName", "Ext2 File System Driver for Windows\0" + VALUE "ProductVersion", "0, 6, 2, 0\0" + VALUE "SpecialBuild", " - \0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff -prudN ext2_new1/src/ext3/generic.c ext2_new/src/ext3/generic.c --- ext2_new1/src/ext3/generic.c 2015-06-09 19:36:45.204203900 +0300 +++ ext2_new/src/ext3/generic.c 2015-09-15 11:58:22.084076300 +0300 @@ -10,7 +10,7 @@ /* INCLUDES *****************************************************************/ #include "ext2fs.h" -#include "linux\ext4.h" +#include /* GLOBALS ***************************************************************/ @@ -480,7 +480,7 @@ Ext2ZeroBuffer( IN PEXT2_IRP_CONTEXT return FALSE; } - __try { + _SEH2_TRY { RtlZeroMemory(Buffer, Size); CcSetDirtyPinnedData(Bcb, NULL ); @@ -493,9 +493,9 @@ Ext2ZeroBuffer( IN PEXT2_IRP_CONTEXT rc = Ext2AddVcbExtent(Vcb, Offset, (LONGLONG)Size); } - } __finally { + } _SEH2_FINALLY { CcUnpinData(Bcb); - } + } _SEH2_END; return rc; @@ -536,7 +536,7 @@ Ext2SaveBuffer( IN PEXT2_IRP_CONTEXT return FALSE; } - __try { + _SEH2_TRY { RtlCopyMemory(Buffer, Buf, Length); CcSetDirtyPinnedData(Bcb, NULL ); @@ -549,9 +549,9 @@ Ext2SaveBuffer( IN PEXT2_IRP_CONTEXT rc = Ext2AddVcbExtent(Vcb, Offset, (LONGLONG)Length); } - } __finally { + } _SEH2_FINALLY { CcUnpinData(Bcb); - } + } _SEH2_END; Buf = (PUCHAR)Buf + Length; Offset = Offset + Length; @@ -1386,13 +1386,13 @@ Ext2AddEntry ( ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE); MainResourceAcquired = TRUE; - __try { + _SEH2_TRY { Ext2ReferXcb(&Dcb->ReferenceCount); de = Ext2BuildEntry(Vcb, Dcb->Mcb, FileName); if (!de) { status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } de->d_inode = Inode; @@ -1414,7 +1414,7 @@ Ext2AddEntry ( de = NULL; } - } __finally { + } _SEH2_FINALLY { Ext2DerefXcb(&Dcb->ReferenceCount); @@ -1424,7 +1424,7 @@ Ext2AddEntry ( if (de) Ext2FreeEntry(de); - } + } _SEH2_END; return status; } @@ -1453,17 +1453,17 @@ Ext2RemoveEntry ( ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE); MainResourceAcquired = TRUE; - __try { + _SEH2_TRY { Ext2ReferXcb(&Dcb->ReferenceCount); bh = ext3_find_entry(IrpContext, Mcb->de, &de); if (!bh) - __leave; + _SEH2_LEAVE; inode = &Mcb->Inode; if (le32_to_cpu(de->inode) != inode->i_ino) - __leave; + _SEH2_LEAVE; if (!inode->i_nlink) { ext3_warning (inode->i_sb, "ext3_unlink", @@ -1474,7 +1474,7 @@ Ext2RemoveEntry ( rc = ext3_delete_entry(IrpContext, dir, de, bh); if (rc) { Status = Ext2WinntError(rc); - __leave; + _SEH2_LEAVE; } /* if (!inode->i_nlink) @@ -1493,7 +1493,7 @@ Ext2RemoveEntry ( Status = STATUS_SUCCESS; - } __finally { + } _SEH2_FINALLY { Ext2DerefXcb(&Dcb->ReferenceCount); @@ -1502,7 +1502,7 @@ Ext2RemoveEntry ( if (bh) brelse(bh); - } + } _SEH2_END; return Status; } @@ -1537,7 +1537,7 @@ Ext2SetParentEntry ( MainResourceAcquired = ExAcquireResourceExclusiveLite(&Dcb->MainResource, TRUE); - __try { + _SEH2_TRY { Ext2ReferXcb(&Dcb->ReferenceCount); @@ -1550,7 +1550,7 @@ Ext2SetParentEntry ( if (!pSelf) { DEBUG(DL_ERR, ( "Ex2SetParentEntry: failed to allocate pSelf.\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } dwBytes = 0; @@ -1571,7 +1571,7 @@ Ext2SetParentEntry ( if (!NT_SUCCESS(Status)) { DEBUG(DL_ERR, ( "Ext2SetParentEntry: failed to read directory.\n")); - __leave; + _SEH2_LEAVE; } ASSERT(dwBytes == EXT2_DIR_REC_LEN(1) + EXT2_DIR_REC_LEN(2)); @@ -1600,7 +1600,7 @@ Ext2SetParentEntry ( DbgBreak(); } - } __finally { + } _SEH2_FINALLY { if (Ext2DerefXcb(&Dcb->ReferenceCount) == 0) { @@ -1614,7 +1614,7 @@ Ext2SetParentEntry ( if (pSelf) { Ext2FreePool(pSelf, EXT2_DENTRY_MAGIC); } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/ext3/htree.c ext2_new/src/ext3/htree.c --- ext2_new1/src/ext3/htree.c 2015-06-09 19:36:45.206205200 +0300 +++ ext2_new/src/ext3/htree.c 2015-10-06 10:24:00.996469900 +0300 @@ -824,6 +824,13 @@ struct dx_map_entry __u16 size; }; +#if defined(__REACTOS__) && !defined(_MSC_VER) +struct ext3_dir_entry_2 * + do_split(struct ext2_icb *icb, struct inode *dir, + struct buffer_head **bh,struct dx_frame *frame, + struct dx_hash_info *hinfo, int *error); +#endif + /* * Future: use high four bits of block for coalesce-on-delete flags * Mask them off for now. @@ -1861,7 +1868,7 @@ int make_indexed_dir(struct ext2_icb *ic de = (struct ext3_dir_entry_2 *)((char *)fde + ext3_rec_len_from_disk(fde->rec_len)); if ((char *) de >= (((char *) root) + blocksize)) { - DEBUG(DL_ERR, (__FUNCTION__ ": invalid rec_len for '..' in inode %lu", + DEBUG(DL_ERR, ( "%s: invalid rec_len for '..' in inode %lu", __FUNCTION__, dir->i_ino)); brelse(bh); return -EIO; diff -prudN ext2_new1/src/ext3/indirect.c ext2_new/src/ext3/indirect.c --- ext2_new1/src/ext3/indirect.c 2015-06-09 19:36:45.208206900 +0300 +++ ext2_new/src/ext3/indirect.c 2015-09-30 12:08:28.976607100 +0300 @@ -219,7 +219,7 @@ Ext2GetBlock( BLOCK_SIZE, PIN_WAIT, &Bcb, - &pData )) { + (void **)&pData )) { DEBUG(DL_ERR, ( "Ext2GetBlock: Failed to PinLock block: %xh ...\n", BlockArray[0] )); @@ -521,7 +521,7 @@ Ext2ExpandBlock( BLOCK_SIZE, PIN_WAIT, &Bcb, - &pData )) { + (void **)&pData )) { DEBUG(DL_ERR, ( "Ext2ExpandInode: failed to PinLock offset :%I64xh...\n", Offset.QuadPart)); @@ -726,7 +726,7 @@ Ext2TruncateBlock( BLOCK_SIZE, PIN_WAIT, &Bcb, - &pData )) { + (void **)&pData )) { DEBUG(DL_ERR, ( "Ext2TruncateBlock: PinLock failed on block %xh ...\n", BlockArray[SizeArray - i - 1])); @@ -906,7 +906,7 @@ Ext2MapIndirect( Layer, Index, dwArray, - &Mcb->Inode.i_block[Slot], + (PULONG)&Mcb->Inode.i_block[Slot], bAlloc, &dwHint, &dwRet, @@ -987,7 +987,7 @@ Ext2ExpandIndirect( Layer, Start, (Layer == 0) ? (Vcb->max_blocks_per_layer[Layer] - Start) : 1, - &Mcb->Inode.i_block[Slot], + (PULONG)&Mcb->Inode.i_block[Slot], &Hint, &Extra ); @@ -1118,11 +1118,11 @@ Ext2TruncateIndirect( Base -= Vcb->max_blocks_per_layer[Layer - 1]; if (Layer - 1 == 0) { - BlockArray = &Mcb->Inode.i_block[0]; + BlockArray = (PULONG)&Mcb->Inode.i_block[0]; SizeArray = End; ASSERT(End == EXT2_NDIR_BLOCKS && Base == 0); } else { - BlockArray = &Mcb->Inode.i_block[EXT2_NDIR_BLOCKS - 1 + Layer - 1]; + BlockArray = (PULONG)&Mcb->Inode.i_block[EXT2_NDIR_BLOCKS - 1 + Layer - 1]; SizeArray = 1; } diff -prudN ext2_new1/src/ext3/recover.c ext2_new/src/ext3/recover.c --- ext2_new1/src/ext3/recover.c 2015-06-09 19:36:45.210207900 +0300 +++ ext2_new/src/ext3/recover.c 2015-09-29 18:04:24.317561300 +0300 @@ -101,7 +101,9 @@ Ext2RecoverJournal( ULONG jNo = 0; PEXT2_MCB jcb = NULL; struct block_device * bd = &Vcb->bd; +#ifndef __REACTOS__ struct super_block * sb = &Vcb->sb; +#endif struct inode * ji = NULL; journal_t * journal = NULL; struct ext3_super_block *esb; diff -prudN ext2_new1/src/ext4/ext4_extents.c ext2_new/src/ext4/ext4_extents.c --- ext2_new1/src/ext4/ext4_extents.c 2015-06-09 19:36:45.223216400 +0300 +++ ext2_new/src/ext4/ext4_extents.c 2015-10-06 10:26:36.482016900 +0300 @@ -14,13 +14,14 @@ */ #include "ext2fs.h" -#include "linux\ext4.h" +#include +#ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4018) #pragma warning(disable: 4242) #pragma warning(disable: 4244) - +#endif /* * used by extent splitting. @@ -82,7 +83,7 @@ static inline void ext_debug(char *str, } #if TRUE #define EXT4_ERROR_INODE(inode, str, ...) do { \ - DbgPrint("inode[%p]: "##str "\n", inode, __VA_ARGS__); \ + DbgPrint("inode[%p]: " str "\n", inode, ##__VA_ARGS__); \ } while(0) #else #define EXT4_ERROR_INODE @@ -390,8 +391,9 @@ static int __ext4_ext_check(const char * { struct ext4_extent_tail *tail; const char *error_msg; +#ifndef __REACTOS__ int max = 0; - +#endif if (eh->eh_magic != EXT4_EXT_MAGIC) { error_msg = "invalid magic"; goto corrupted; @@ -2172,7 +2174,7 @@ fix_extent_len: /* * returns 1 if current index have to be freed (even partial) */ -static int inline +static inline int ext4_ext_more_to_rm(struct ext4_ext_path *path) { BUG_ON(path->p_idx == NULL); @@ -2191,7 +2193,9 @@ ext4_ext_more_to_rm(struct ext4_ext_path int ext4_ext_remove_space(void *icb, struct inode *inode, unsigned long start) { +#ifndef __REACTOS__ struct super_block *sb = inode->i_sb; +#endif int depth = ext_depth(inode); struct ext4_ext_path *path; handle_t *handle = NULL; @@ -2498,5 +2502,7 @@ out2: return err ? err : allocated; } +#ifdef _MSC_VER #pragma warning(pop) +#endif diff -prudN ext2_new1/src/fastio.c ext2_new/src/fastio.c --- ext2_new1/src/fastio.c 2015-06-09 19:36:45.228219900 +0300 +++ ext2_new/src/fastio.c 2015-09-30 11:24:35.805316300 +0300 @@ -53,7 +53,7 @@ Ext2IsFastIoPossible( } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoCheckIfPossible ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -72,31 +72,31 @@ Ext2FastIoCheckIfPossible ( lLength.QuadPart = Length; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && (Fcb->Identifier.Size == sizeof(EXT2_FCB))); if (IsDirectory(Fcb)) { - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { - __leave; + _SEH2_LEAVE; } if (CheckForReadOperation) { @@ -139,20 +139,20 @@ Ext2FastIoCheckIfPossible ( (bPossible ? "Succeeded" : "Failed"))); #endif - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { bPossible = FastIoIsNotPossible; - } + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; return bPossible; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoRead (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -183,7 +183,7 @@ Ext2FastIoRead (IN PFILE_OBJECT return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoWrite ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -202,7 +202,7 @@ Ext2FastIoWrite ( if (Fcb == NULL) return FALSE; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); @@ -210,7 +210,7 @@ Ext2FastIoWrite ( (Fcb->Identifier.Size == sizeof(EXT2_FCB))); if (IsVcbReadOnly(Fcb->Vcb)) { - __leave; + _SEH2_LEAVE; } ExAcquireResourceSharedLite(&Fcb->MainResource, TRUE); @@ -227,14 +227,14 @@ Ext2FastIoWrite ( LockKey, Buffer, IoStatus, DeviceObject); } - } __finally { + } _SEH2_FINALLY { if (Locked) { ExReleaseResourceLite(&Fcb->MainResource); } FsRtlExitFileSystem(); - } + } _SEH2_END; DEBUG(DL_IO, ("Ext2FastIoWrite: %wZ Offset: %I64xh Length: %xh Key: %xh Status=%d\n", &Fcb->Mcb->ShortName, FileOffset->QuadPart, Length, LockKey, Status)); @@ -242,7 +242,7 @@ Ext2FastIoWrite ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryBasicInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -254,21 +254,21 @@ Ext2FastIoQueryBasicInfo ( BOOLEAN Status = FALSE; BOOLEAN FcbMainResourceAcquired = FALSE; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -285,7 +285,7 @@ Ext2FastIoQueryBasicInfo ( if (!ExAcquireResourceSharedLite( &Fcb->MainResource, Wait)) { - __leave; + _SEH2_LEAVE; } FcbMainResourceAcquired = TRUE; } @@ -322,18 +322,18 @@ Ext2FastIoQueryBasicInfo ( Status = TRUE; - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { if (FcbMainResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); } FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG @@ -357,7 +357,7 @@ Ext2FastIoQueryBasicInfo ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryStandardInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -372,21 +372,21 @@ Ext2FastIoQueryStandardInfo ( PEXT2_FCB Fcb; BOOLEAN FcbMainResourceAcquired = FALSE; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -405,7 +405,7 @@ Ext2FastIoQueryStandardInfo ( if (!ExAcquireResourceSharedLite( &Fcb->MainResource, Wait )) { - __leave; + _SEH2_LEAVE; } FcbMainResourceAcquired = TRUE; } @@ -443,18 +443,18 @@ Ext2FastIoQueryStandardInfo ( #endif Status = TRUE; - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { if (FcbMainResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); } FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG if (Status == FALSE) { @@ -474,7 +474,7 @@ Ext2FastIoQueryStandardInfo ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoLock ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -490,21 +490,21 @@ Ext2FastIoLock ( BOOLEAN Status = FALSE; PEXT2_FCB Fcb; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -513,7 +513,7 @@ Ext2FastIoLock ( if (IsDirectory(Fcb)) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } #if EXT2_DEBUG DEBUG(DL_INF, ( @@ -532,7 +532,7 @@ Ext2FastIoLock ( #endif if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) { - __leave; + _SEH2_LEAVE; } Status = FsRtlFastLock( @@ -552,14 +552,14 @@ Ext2FastIoLock ( Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); } - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG if (Status == FALSE) { @@ -582,7 +582,7 @@ Ext2FastIoLock ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockSingle ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -596,22 +596,22 @@ Ext2FastIoUnlockSingle ( BOOLEAN Status = FALSE; PEXT2_FCB Fcb; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -620,7 +620,7 @@ Ext2FastIoUnlockSingle ( if (IsDirectory(Fcb)) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } #if EXT2_DEBUG @@ -638,7 +638,7 @@ Ext2FastIoUnlockSingle ( #endif if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) { - __leave; + _SEH2_LEAVE; } IoStatus->Status = FsRtlFastUnlockSingle( @@ -656,14 +656,14 @@ Ext2FastIoUnlockSingle ( Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG if (Status == FALSE) { @@ -685,7 +685,7 @@ Ext2FastIoUnlockSingle ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockAll ( IN PFILE_OBJECT FileObject, IN PEPROCESS Process, @@ -695,22 +695,22 @@ Ext2FastIoUnlockAll ( BOOLEAN Status = FALSE; PEXT2_FCB Fcb; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -719,7 +719,7 @@ Ext2FastIoUnlockAll ( if (IsDirectory(Fcb)) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } #if EXT2_DEBUG DEBUG(DL_INF, ( @@ -731,7 +731,7 @@ Ext2FastIoUnlockAll ( #endif if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) { - __leave; + _SEH2_LEAVE; } IoStatus->Status = FsRtlFastUnlockAll( @@ -745,14 +745,14 @@ Ext2FastIoUnlockAll ( Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG if (Status == FALSE) { @@ -776,7 +776,7 @@ Ext2FastIoUnlockAll ( return Status; } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoUnlockAllByKey ( IN PFILE_OBJECT FileObject, IN PEPROCESS Process, @@ -788,22 +788,22 @@ Ext2FastIoUnlockAllByKey ( BOOLEAN Status = FALSE; PEXT2_FCB Fcb; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); - __try { + _SEH2_TRY { if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -812,7 +812,7 @@ Ext2FastIoUnlockAllByKey ( if (IsDirectory(Fcb)) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } #if EXT2_DEBUG @@ -830,7 +830,7 @@ Ext2FastIoUnlockAllByKey ( #endif if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) { - __leave; + _SEH2_LEAVE; } IoStatus->Status = FsRtlFastUnlockAllByKey( @@ -846,14 +846,14 @@ Ext2FastIoUnlockAllByKey ( Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); - } __except (EXCEPTION_EXECUTE_HANDLER) { - IoStatus->Status = GetExceptionCode(); - } + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { + IoStatus->Status = _SEH2_GetExceptionCode(); + } _SEH2_END; - } __finally { + } _SEH2_FINALLY { FsRtlExitFileSystem(); - } + } _SEH2_END; #if EXT2_DEBUG if (Status == FALSE) { @@ -879,7 +879,7 @@ Ext2FastIoUnlockAllByKey ( } -BOOLEAN +BOOLEAN NTAPI Ext2FastIoQueryNetworkOpenInfo ( IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, @@ -894,20 +894,20 @@ Ext2FastIoQueryNetworkOpenInfo ( BOOLEAN FcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { FsRtlEnterFileSystem(); if (IsExt2FsDevice(DeviceObject)) { IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { DbgBreak(); IoStatus->Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -922,7 +922,7 @@ Ext2FastIoQueryNetworkOpenInfo ( #endif if (FileObject->FsContext2) { - __leave; + _SEH2_LEAVE; } if (!IsFlagOn(Fcb->Flags, FCB_PAGE_FILE)) { @@ -931,7 +931,7 @@ Ext2FastIoQueryNetworkOpenInfo ( &Fcb->MainResource, Wait )) { - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -967,14 +967,14 @@ Ext2FastIoQueryNetworkOpenInfo ( IoStatus->Status = STATUS_SUCCESS; IoStatus->Information = sizeof(FILE_NETWORK_OPEN_INFORMATION); - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); } FsRtlExitFileSystem(); - } + } _SEH2_END; return bResult; } diff -prudN ext2_new1/src/fileinfo.c ext2_new/src/fileinfo.c --- ext2_new1/src/fileinfo.c 2015-06-09 19:36:45.230221200 +0300 +++ ext2_new/src/fileinfo.c 2015-09-29 19:52:04.209485900 +0300 @@ -10,7 +10,7 @@ /* INCLUDES *****************************************************************/ #include "ext2fs.h" -#include "linux\ext4.h" +#include /* GLOBALS ***************************************************************/ @@ -45,7 +45,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C PVOID Buffer; BOOLEAN FcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -58,14 +58,14 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; Fcb = (PEXT2_FCB) FileObject->FsContext; if (Fcb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } // @@ -73,13 +73,13 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C // if (Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (!((Fcb->Identifier.Type == EXT2FCB) && (Fcb->Identifier.Size == sizeof(EXT2_FCB)))) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Vcb = Fcb->Vcb; @@ -91,7 +91,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -122,7 +122,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_BASIC_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FileBasicInformation = (PFILE_BASIC_INFORMATION) Buffer; @@ -151,7 +151,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_STANDARD_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FSI = (PFILE_STANDARD_INFORMATION) Buffer; @@ -188,7 +188,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_INTERNAL_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FileInternalInformation = (PFILE_INTERNAL_INFORMATION) Buffer; @@ -208,7 +208,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_EA_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FileEaInformation = (PFILE_EA_INFORMATION) Buffer; @@ -254,7 +254,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_POSITION_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FilePositionInformation = (PFILE_POSITION_INFORMATION) Buffer; @@ -278,7 +278,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_ALL_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FileAllInformation = (PFILE_ALL_INFORMATION) Buffer; @@ -356,7 +356,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C Length - FIELD_OFFSET(FILE_ALL_INFORMATION, NameInformation.FileName) ); - __leave; + _SEH2_LEAVE; } RtlCopyMemory( @@ -393,7 +393,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_NETWORK_OPEN_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } PFNOI = (PFILE_NETWORK_OPEN_INFORMATION) Buffer; @@ -435,7 +435,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C if (Length < sizeof(FILE_ATTRIBUTE_TAG_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FATI = (PFILE_ATTRIBUTE_TAG_INFORMATION) Buffer; @@ -464,7 +464,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C break; } - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -478,7 +478,7 @@ Ext2QueryFileInformation (IN PEXT2_IRP_C Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -507,7 +507,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON BOOLEAN FcbMainResourceAcquired = FALSE; BOOLEAN FcbPagingIoResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -520,7 +520,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } /* check io stack location of irp stack */ @@ -538,7 +538,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON (Vcb->Identifier.Size == sizeof(EXT2_VCB))); if (!IsMounted(Vcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } /* we need grab Vcb in case it's a rename operation */ @@ -547,7 +547,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON &Vcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } VcbMainResourceAcquired = TRUE; } @@ -555,13 +555,13 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (IsVcbReadOnly(Vcb)) { if (FileInformationClass != FilePositionInformation) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } } if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; @@ -570,14 +570,14 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON // This request is issued to volumes, just return success if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && (Fcb->Identifier.Size == sizeof(EXT2_FCB))); if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; @@ -588,7 +588,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (Mcb) { if (IsFlagOn(Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } } else { Mcb = Fcb->Mcb; @@ -606,7 +606,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON NULL ); if (Status != STATUS_SUCCESS) { - __leave; + _SEH2_LEAVE; } // @@ -625,7 +625,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON &Fcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbMainResourceAcquired = TRUE; @@ -639,7 +639,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } FcbPagingIoResourceAcquired = TRUE; } @@ -718,7 +718,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (IsMcbDirectory(Mcb) || IsMcbSpecialFile(Mcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } else { Status = STATUS_SUCCESS; } @@ -766,7 +766,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON Status = STATUS_USER_MAPPED_FILE; DbgBreak(); - __leave; + _SEH2_LEAVE; } } @@ -797,7 +797,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (IsMcbDirectory(Mcb) || IsMcbSpecialFile(Mcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } else { Status = STATUS_SUCCESS; } @@ -814,7 +814,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (IoStackLocation->Parameters.SetFile.AdvanceOnly) { if (IsFlagOn(Fcb->Flags, FCB_DELETE_PENDING)) { - __leave; + _SEH2_LEAVE; } if (EndOfFile.QuadPart > Fcb->Header.FileSize.QuadPart) { @@ -826,7 +826,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON NotifyFilter = FILE_NOTIFY_CHANGE_SIZE; } - __leave; + _SEH2_LEAVE; } NewSize.QuadPart = CEILING_ALIGNED(ULONGLONG, @@ -862,7 +862,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (!MmCanFileBeTruncated(&(Fcb->SectionObject), &NewSize)) { Status = STATUS_USER_MAPPED_FILE; DbgBreak(); - __leave; + _SEH2_LEAVE; } /* truncate file blocks */ @@ -928,7 +928,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (IsMcbDirectory(Mcb) || IsMcbSpecialFile(Mcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } else { Status = STATUS_SUCCESS; } @@ -936,7 +936,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON NewVDL = FVDL->ValidDataLength; if ((NewVDL.QuadPart < Fcb->Header.ValidDataLength.QuadPart)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (NewVDL.QuadPart > Fcb->Header.FileSize.QuadPart) NewVDL = Fcb->Header.FileSize; @@ -944,7 +944,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (!MmCanFileBeTruncated(FileObject->SectionObjectPointer, &NewVDL)) { Status = STATUS_USER_MAPPED_FILE; - __leave; + _SEH2_LEAVE; } Fcb->Header.ValidDataLength = NewVDL; @@ -985,7 +985,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON if (Length < sizeof(FILE_POSITION_INFORMATION)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } FilePositionInformation = (PFILE_POSITION_INFORMATION) Buffer; @@ -994,14 +994,14 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON (FilePositionInformation->CurrentByteOffset.LowPart & DeviceObject->AlignmentRequirement) ) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } FileObject->CurrentByteOffset = FilePositionInformation->CurrentByteOffset; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } break; @@ -1017,7 +1017,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON Status = STATUS_INVALID_PARAMETER;/* STATUS_INVALID_INFO_CLASS; */ } - } __finally { + } _SEH2_FINALLY { if (FcbPagingIoResourceAcquired) { ExReleaseResourceLite(&Fcb->PagingIoResource); @@ -1050,7 +1050,7 @@ Ext2SetFileInformation (IN PEXT2_IRP_CON Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -1706,7 +1706,7 @@ Ext2DeleteFile( } - __try { + _SEH2_TRY { Ext2ReferMcb(Mcb); @@ -1756,15 +1756,15 @@ Ext2DeleteFile( if (IsMcbSymLink(Mcb)) { if (Mcb->Inode.i_nlink > 0) { Status = STATUS_CANNOT_DELETE; - __leave; + _SEH2_LEAVE; } } else if (!IsMcbDirectory(Mcb)) { if (Mcb->Inode.i_nlink > 0) { - __leave; + _SEH2_LEAVE; } } else { if (Mcb->Inode.i_nlink >= 2) { - __leave; + _SEH2_LEAVE; } } @@ -1810,7 +1810,7 @@ Ext2DeleteFile( Ext2FreeInode(IrpContext, Vcb, Mcb->Inode.i_ino, Ext2InodeType(Mcb)); } - } __finally { + } _SEH2_FINALLY { if (FcbPagingIoAcquired) { ExReleaseResourceLite(&Fcb->PagingIoResource); @@ -1840,7 +1840,7 @@ Ext2DeleteFile( } Ext2DerefMcb(Mcb); - } + } _SEH2_END; DEBUG(DL_INF, ( "Ext2DeleteFile: %wZ Succeed... EXT2SB->S_FREE_BLOCKS = %I64xh .\n", &Mcb->FullName, ext3_free_blocks_count(SUPER_BLOCK))); diff -prudN ext2_new1/src/flush.c ext2_new/src/flush.c --- ext2_new1/src/flush.c 2015-06-09 19:36:45.232222600 +0300 +++ ext2_new/src/flush.c 2015-09-30 11:23:19.435680100 +0300 @@ -18,7 +18,7 @@ extern PEXT2_GLOBAL Ext2Global; /* DEFINITIONS *************************************************************/ -NTSTATUS +NTSTATUS NTAPI Ext2FlushCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -147,7 +147,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte BOOLEAN MainResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext); @@ -161,7 +161,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -172,7 +172,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte ASSERT(IsMounted(Vcb)); if (IsVcbReadOnly(Vcb)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } Irp = IrpContext->Irp; @@ -185,7 +185,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } MainResourceAcquired = @@ -201,7 +201,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte Ext2VerifyVcb(IrpContext, Vcb); Status = Ext2FlushFiles(IrpContext, (PEXT2_VCB)(FcbOrVcb), FALSE); if (NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } Status = Ext2FlushVolume(IrpContext, (PEXT2_VCB)(FcbOrVcb), FALSE); @@ -227,7 +227,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte FsRtlNumberOfRunsInLargeMcb(&Vcb->Extents))); - } __finally { + } _SEH2_FINALLY { if (MainResourceAcquired) { ExReleaseResourceLite(&FcbOrVcb->MainResource); @@ -262,7 +262,7 @@ Ext2Flush (IN PEXT2_IRP_CONTEXT IrpConte Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } \ No newline at end of file diff -prudN ext2_new1/src/fsctl.c ext2_new/src/fsctl.c --- ext2_new1/src/fsctl.c 2015-06-09 19:36:45.234224600 +0300 +++ ext2_new/src/fsctl.c 2015-10-06 10:29:20.014368500 +0300 @@ -96,26 +96,26 @@ Ext2LockVcb (IN PEXT2_VCB Vcb, { NTSTATUS Status = STATUS_SUCCESS; - __try { + _SEH2_TRY { if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) { DEBUG(DL_INF, ( "Ext2LockVolume: Volume is already locked.\n")); Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } if (Vcb->OpenHandleCount > (ULONG)(FileObject ? 1 : 0)) { DEBUG(DL_INF, ( "Ext2LockVcb: There are still opened files.\n")); Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } if (!Ext2IsHandleCountZero(Vcb)) { DEBUG(DL_INF, ( "Ext2LockVcb: Thare are still opened files.\n")); Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } SetLongFlag(Vcb->Flags, VCB_VOLUME_LOCKED); @@ -124,9 +124,9 @@ Ext2LockVcb (IN PEXT2_VCB Vcb, DEBUG(DL_INF, ( "Ext2LockVcb: Volume locked.\n")); - } __finally { + } _SEH2_FINALLY { // Nothing - } + } _SEH2_END; return Status; } @@ -141,7 +141,7 @@ Ext2LockVolume (IN PEXT2_IRP_CONTEXT Irp NTSTATUS Status; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -157,7 +157,7 @@ Ext2LockVolume (IN PEXT2_IRP_CONTEXT Irp // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -188,7 +188,7 @@ Ext2LockVolume (IN PEXT2_IRP_CONTEXT Irp Status = Ext2LockVcb(Vcb, IrpSp->FileObject); - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -197,7 +197,7 @@ Ext2LockVolume (IN PEXT2_IRP_CONTEXT Irp if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -208,17 +208,17 @@ Ext2UnlockVcb ( IN PEXT2_VCB Vcb, { NTSTATUS Status; - __try { + _SEH2_TRY { if (FileObject && FileObject->FsContext != Vcb) { Status = STATUS_NOT_LOCKED; - __leave; + _SEH2_LEAVE; } if (!FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED)) { DEBUG(DL_ERR, ( ": Ext2UnlockVcb: Volume is not locked.\n")); Status = STATUS_NOT_LOCKED; - __leave; + _SEH2_LEAVE; } if (Vcb->LockFile == FileObject) { @@ -230,9 +230,9 @@ Ext2UnlockVcb ( IN PEXT2_VCB Vcb, Status = STATUS_NOT_LOCKED; } - } __finally { + } _SEH2_FINALLY { // Nothing - } + } _SEH2_END; return Status; } @@ -248,7 +248,7 @@ Ext2UnlockVolume ( PEXT2_VCB Vcb; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -262,7 +262,7 @@ Ext2UnlockVolume ( // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -277,7 +277,7 @@ Ext2UnlockVolume ( Status = Ext2UnlockVcb(Vcb, IrpSp->FileObject); - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -286,7 +286,7 @@ Ext2UnlockVolume ( if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -299,7 +299,9 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON PIRP Irp; PIO_STACK_LOCATION IrpSp; +#ifndef __REACTOS__ PVPB NewVpb = NULL; +#endif HANDLE Handle; PLIST_ENTRY ListEntry; @@ -310,19 +312,19 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON LUID Privilege = {SE_TCB_PRIVILEGE, 0}; - __try { + _SEH2_TRY { Irp = IrpContext->Irp; IrpSp = IoGetCurrentIrpStackLocation(Irp); if (!IsExt2FsDevice(IrpSp->DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } if (!SeSinglePrivilegeCheck(Privilege, Irp->RequestorMode)) { Status = STATUS_PRIVILEGE_NOT_HELD; - __leave; + _SEH2_LEAVE; } @@ -337,7 +339,7 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON if (IoIs32bitProcess(Irp)) { if (InputLength != sizeof(UINT32)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Handle = (HANDLE) LongToHandle( (*(PUINT32)Irp->AssociatedIrp.SystemBuffer) ); } else @@ -345,7 +347,7 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON { if (InputLength != sizeof(HANDLE)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } Handle = *(PHANDLE)Irp->AssociatedIrp.SystemBuffer; } @@ -354,11 +356,11 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON 0, *IoFileObjectType, KernelMode, - &FileObject, + (void **)&FileObject, NULL ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } else { DeviceObject = FileObject->DeviceObject; ObDereferenceObject(FileObject); @@ -387,7 +389,7 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON } } - } __finally { + } _SEH2_FINALLY { if (GlobalResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); @@ -396,7 +398,7 @@ Ext2InvalidateVolumes ( IN PEXT2_IRP_CON if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -471,7 +473,7 @@ Ext2OplockRequest ( ASSERT(IrpContext); - __try { + _SEH2_TRY { Irp = IrpContext->Irp; ASSERT(Irp); @@ -490,7 +492,7 @@ Ext2OplockRequest ( // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -512,7 +514,7 @@ Ext2OplockRequest ( if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -520,13 +522,13 @@ Ext2OplockRequest ( if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } @@ -594,7 +596,7 @@ Ext2OplockRequest ( Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); IrpContext->Irp = NULL; - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -604,10 +606,10 @@ Ext2OplockRequest ( ExReleaseResourceLite(&Vcb->MainResource); } - if (!AbnormalTermination()) { + if (!_SEH2_AbnormalTermination()) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -622,7 +624,7 @@ Ext2IsVolumeDirty ( PEXTENDED_IO_STACK_LOCATION IrpSp; PULONG VolumeState; - __try { + _SEH2_TRY { Irp = IrpContext->Irp; IrpSp = (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation(Irp); @@ -643,22 +645,22 @@ Ext2IsVolumeDirty ( } else { status = STATUS_INVALID_USER_BUFFER; - __leave; + _SEH2_LEAVE; } if (IrpSp->Parameters.FileSystemControl.OutputBufferLength < sizeof(ULONG)) { status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } *VolumeState = 0; - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, status); } - } + } _SEH2_END; return status; } @@ -685,7 +687,7 @@ Ext2QueryExtentMappings( NTSTATUS Status = STATUS_SUCCESS; - __try { + _SEH2_TRY { /* now building all the request extents */ while (Vbn < RequestVbn->QuadPart) { @@ -707,7 +709,7 @@ Ext2QueryExtentMappings( &Extent); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } if (Chain) { @@ -725,7 +727,7 @@ Ext2QueryExtentMappings( if (PartialRuns == NULL) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } RtlZeroMemory( PartialRuns, (Ext2CountExtents(Chain) + 2) * @@ -751,7 +753,7 @@ Ext2QueryExtentMappings( *pMappedRuns = MappedRuns; - } __finally { + } _SEH2_FINALLY { if (!NT_SUCCESS(Status) || Status == STATUS_PENDING) { if (MappedRuns) { @@ -763,7 +765,7 @@ Ext2QueryExtentMappings( if (Chain) { Ext2DestroyExtentChain(Chain); } - } + } _SEH2_END; return Status; } @@ -794,7 +796,7 @@ Ext2QueryRetrievalPointers ( BOOLEAN FcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext); Irp = IrpContext->Irp; @@ -817,7 +819,7 @@ Ext2QueryRetrievalPointers ( /* This request is not allowed on the main device object */ if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -832,20 +834,20 @@ Ext2QueryRetrievalPointers ( /* check Fcb is valid or not */ if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && (Fcb->Identifier.Size == sizeof(EXT2_FCB))); if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Ccb->Identifier.Type == EXT2CCB) && @@ -857,13 +859,13 @@ Ext2QueryRetrievalPointers ( InputSize != sizeof(LARGE_INTEGER) || OutputSize != sizeof(PVOID)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite ( &Fcb->MainResource, Ext2CanIWait())) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -875,7 +877,7 @@ Ext2QueryRetrievalPointers ( /* request size beyonds whole file size */ if (RequestVbn->QuadPart >= Fcb->Header.AllocationSize.QuadPart) { Status = STATUS_END_OF_FILE; - __leave; + _SEH2_LEAVE; } Status = Ext2QueryExtentMappings( @@ -886,20 +888,20 @@ Ext2QueryRetrievalPointers ( pMappedRuns ); - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); } - if (!AbnormalTermination()) { + if (!_SEH2_AbnormalTermination()) { if (Status == STATUS_PENDING || Status == STATUS_CANT_WAIT) { Status = Ext2QueueRequest(IrpContext); } else { Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -939,7 +941,7 @@ Ext2GetRetrievalPointers ( BOOLEAN FcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext); Irp = IrpContext->Irp; @@ -960,7 +962,7 @@ Ext2GetRetrievalPointers ( /* This request is not allowed on the main device object */ if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -975,7 +977,7 @@ Ext2GetRetrievalPointers ( /* check Fcb is valid or not */ if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -983,13 +985,13 @@ Ext2GetRetrievalPointers ( if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Ccb->Identifier.Type == EXT2CCB) && @@ -998,13 +1000,13 @@ Ext2GetRetrievalPointers ( if (InputSize < sizeof(STARTING_VCN_INPUT_BUFFER) || OutputSize < sizeof(RETRIEVAL_POINTERS_BUFFER) ) { Status = STATUS_BUFFER_TOO_SMALL; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite ( &Fcb->MainResource, Ext2CanIWait())) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -1014,17 +1016,17 @@ Ext2GetRetrievalPointers ( /* probe user buffer */ - __try { + _SEH2_TRY { if (Irp->RequestorMode != KernelMode) { ProbeForRead (SVIB, InputSize, sizeof(UCHAR)); ProbeForWrite(RPSB, OutputSize, sizeof(UCHAR)); } - } __except(EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Status = STATUS_INVALID_USER_BUFFER; - } + } _SEH2_END; if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } UsedSize = FIELD_OFFSET(RETRIEVAL_POINTERS_BUFFER, Extents[0]); @@ -1035,7 +1037,7 @@ Ext2GetRetrievalPointers ( Vbn = (SVIB->StartingVcn.QuadPart << BLOCK_BITS); if (Vbn >= Fcb->Header.AllocationSize.QuadPart ) { Status = STATUS_END_OF_FILE; - __leave; + _SEH2_LEAVE; } /* now building all the request extents */ @@ -1059,7 +1061,7 @@ Ext2GetRetrievalPointers ( if (!NT_SUCCESS(Status)) { DbgBreak(); - __leave; + _SEH2_LEAVE; } /* fill user buffer of RETRIEVAL_POINTERS_BUFFER */ @@ -1080,7 +1082,7 @@ Ext2GetRetrievalPointers ( } if (UsedSize + sizeof(RETRIEVAL_POINTERS_BUFFER) > OutputSize) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } UsedSize += sizeof(LARGE_INTEGER) * 2; Irp->IoStatus.Information = (ULONG_PTR)UsedSize; @@ -1132,7 +1134,7 @@ exit_to_get_rps: } #endif - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -1142,14 +1144,14 @@ exit_to_get_rps: Ext2DestroyExtentChain(Chain); } - if (!AbnormalTermination()) { + if (!_SEH2_AbnormalTermination()) { if (Status == STATUS_PENDING || Status == STATUS_CANT_WAIT) { Status = Ext2QueueRequest(IrpContext); } else { Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -1178,7 +1180,7 @@ Ext2GetRetrievalPointerBase ( BOOLEAN FcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext); Irp = IrpContext->Irp; @@ -1198,7 +1200,7 @@ Ext2GetRetrievalPointerBase ( /* This request is not allowed on the main device object */ if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -1213,7 +1215,7 @@ Ext2GetRetrievalPointerBase ( /* check Fcb is valid or not */ if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -1221,13 +1223,13 @@ Ext2GetRetrievalPointerBase ( if (IsFlagOn(Fcb->Mcb->Flags, MCB_FILE_DELETED)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; if (Ccb == NULL) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Ccb->Identifier.Type == EXT2CCB) && @@ -1235,13 +1237,13 @@ Ext2GetRetrievalPointerBase ( if (OutputSize < sizeof(LARGE_INTEGER)) { Status = STATUS_BUFFER_TOO_SMALL; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite ( &Fcb->MainResource, Ext2CanIWait())) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } FcbResourceAcquired = TRUE; @@ -1249,18 +1251,18 @@ Ext2GetRetrievalPointerBase ( /* probe user buffer */ - __try { + _SEH2_TRY { if (Irp->RequestorMode != KernelMode) { ProbeForWrite(FileAreaOffset, OutputSize, sizeof(UCHAR)); } - } __except(EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Status = STATUS_INVALID_USER_BUFFER; - } + } _SEH2_END; if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } DEBUG(DL_DBG, ("Ext2GetRetrievalPointerBase: FileAreaOffset is 0.\n")); @@ -1269,20 +1271,20 @@ Ext2GetRetrievalPointerBase ( Irp->IoStatus.Information = sizeof(LARGE_INTEGER); - } __finally { + } _SEH2_FINALLY { if (FcbResourceAcquired) { ExReleaseResourceLite(&Fcb->MainResource); } - if (!AbnormalTermination()) { + if (!_SEH2_AbnormalTermination()) { if (Status == STATUS_PENDING || Status == STATUS_CANT_WAIT) { Status = Ext2QueueRequest(IrpContext); } else { Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -1440,7 +1442,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir ULONG dwBytes; DISK_GEOMETRY DiskGeometry; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -1459,12 +1461,12 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir // if (!IsExt2FsDevice(MainDeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(Ext2Global->Flags, EXT2_UNLOAD_PENDING)) { Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } #if 0 @@ -1472,7 +1474,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir *((PULONG)IrpContext->RealDevice->DeviceExtension) == 'DSSA') { } else { Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } #endif @@ -1491,7 +1493,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir &dwBytes ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } Status = IoCreateDevice( @@ -1504,7 +1506,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir &VolumeDeviceObject ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } INC_MEM_COUNT(PS_VCB, VolumeDeviceObject, sizeof(EXT2_VCB)); @@ -1535,7 +1537,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir if (!NT_SUCCESS(Status)) { Vcb = NULL; Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } ASSERT (NULL != Ext2Sb); @@ -1545,7 +1547,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir } else { Status = STATUS_UNRECOGNIZED_VOLUME; Vcb = NULL; - __leave; + _SEH2_LEAVE; } DEBUG(DL_DBG, ("Ext2MountVolume: DevObject=%p Vcb=%p\n", VolumeDeviceObject, Vcb)); @@ -1599,7 +1601,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir Vcb = NULL; } - } __finally { + } _SEH2_FINALLY { if (GlobalDataResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); @@ -1629,7 +1631,7 @@ Ext2MountVolume (IN PEXT2_IRP_CONTEXT Ir if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -1647,7 +1649,7 @@ Ext2VerifyVcb (IN PEXT2_IRP_CONTEXT IrpC PIRP Irp; PEXTENDED_IO_STACK_LOCATION IrpSp; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -1728,9 +1730,9 @@ Ext2VerifyVcb (IN PEXT2_IRP_CONTEXT IrpC } } - } __finally { + } _SEH2_FINALLY { - } + } _SEH2_END; } @@ -1747,7 +1749,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I ULONG ChangeCount = 0; ULONG dwBytes; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -1759,7 +1761,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -1774,12 +1776,12 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I if (!FlagOn(Vcb->TargetDeviceObject->Flags, DO_VERIFY_VOLUME)) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (!IsMounted(Vcb)) { Status = STATUS_WRONG_VOLUME; - __leave; + _SEH2_LEAVE; } dwBytes = sizeof(ULONG); @@ -1794,7 +1796,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I if (!NT_SUCCESS(Status)) { Status = STATUS_WRONG_VOLUME; - __leave; + _SEH2_LEAVE; } else { Vcb->ChangeCount = ChangeCount; } @@ -1804,7 +1806,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I Status = Ext2LoadSuper(Vcb, TRUE, &ext2_sb); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } ASSERT(NULL != ext2_sb); @@ -1839,7 +1841,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I DEBUG(DL_INF, ( "Ext2VerifyVolume: Volume verify failed.\n")); } - } __finally { + } _SEH2_FINALLY { if (ext2_sb) Ext2FreePool(ext2_sb, EXT2_SB_MAGIC); @@ -1851,7 +1853,7 @@ Ext2VerifyVolume (IN PEXT2_IRP_CONTEXT I if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -1892,7 +1894,7 @@ Ext2DismountVolume (IN PEXT2_IRP_CONTEXT PEXT2_VCB Vcb; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -1906,7 +1908,7 @@ Ext2DismountVolume (IN PEXT2_IRP_CONTEXT // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -1926,7 +1928,7 @@ Ext2DismountVolume (IN PEXT2_IRP_CONTEXT if ( IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { Status = STATUS_VOLUME_DISMOUNTED; - __leave; + _SEH2_LEAVE; } Ext2FlushFiles(IrpContext, Vcb, FALSE); @@ -1941,7 +1943,7 @@ Ext2DismountVolume (IN PEXT2_IRP_CONTEXT DEBUG(DL_INF, ( "Ext2Dismount: Volume dismount pending.\n")); Status = STATUS_SUCCESS; - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -1950,7 +1952,7 @@ Ext2DismountVolume (IN PEXT2_IRP_CONTEXT if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -2066,7 +2068,7 @@ Ext2PurgeVolume (IN PEXT2_VCB Vcb, PLIST_ENTRY ListEntry; PFCB_LIST_ENTRY FcbListEntry; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(Vcb != NULL); ASSERT((Vcb->Identifier.Type == EXT2VCB) && @@ -2153,12 +2155,12 @@ Ext2PurgeVolume (IN PEXT2_VCB Vcb, DEBUG(DL_INF, ( "Ext2PurgeVolume: Volume flushed and purged.\n")); - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); } - } + } _SEH2_END; return STATUS_SUCCESS; } diff -prudN ext2_new1/src/init.c ext2_new/src/init.c --- ext2_new1/src/init.c 2015-06-09 19:36:45.328289500 +0300 +++ ext2_new/src/init.c 2015-10-06 10:11:01.381516200 +0300 @@ -24,7 +24,7 @@ CHAR gDate[] = __DATE__; /* DEFINITIONS ***********************************************************/ -NTSTATUS +NTSTATUS NTAPI DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ); @@ -51,7 +51,7 @@ DECLARE_EXIT(journal_exit); * RETURNS: None */ -VOID +VOID NTAPI DriverUnload (IN PDRIVER_OBJECT DriverObject) { @@ -329,7 +329,7 @@ Ext2QueryGlobalParameters( IN PUNICODE_S } if (Ext3ForceWriting) { - DbgPrint("Ext2Fsd -- Warning: Ext3ForceWriting enabled !!!\n"); + DEBUG(DL_WRN, ("Ext2Fsd -- Warning: Ext3ForceWriting enabled !!!\n")); SetLongFlag(Ext2Global->Flags, EXT3_FORCE_WRITING); SetLongFlag(Ext2Global->Flags, EXT2_SUPPORT_WRITING); @@ -350,11 +350,13 @@ Ext2QueryGlobalParameters( IN PUNICODE_S #define NLS_OEM_LEAD_BYTE_INFO (*NlsOemLeadByteInfo) +#ifndef __REACTOS__ #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \ (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \ (NLS_MB_CODE_PAGE_TAG && \ (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \ ) +#endif /* @@ -366,7 +368,7 @@ Ext2QueryGlobalParameters( IN PUNICODE_S * RegistryPath = path to our configuration entries * RETURNS: Success or failure */ -NTSTATUS +NTSTATUS NTAPI DriverEntry ( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath diff -prudN ext2_new1/src/lock.c ext2_new/src/lock.c --- ext2_new1/src/lock.c 2015-06-09 19:36:45.342296400 +0300 +++ ext2_new/src/lock.c 2015-09-29 19:52:17.150779900 +0300 @@ -34,7 +34,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir BOOLEAN CompleteIrp = TRUE; BOOLEAN bFcbAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -45,7 +45,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; @@ -54,7 +54,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir ASSERT(Fcb != NULL); if (Fcb->Identifier.Type == EXT2VCB) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ASSERT((Fcb->Identifier.Type == EXT2FCB) && @@ -62,7 +62,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir if (FlagOn(Fcb->Mcb->FileAttr, FILE_ATTRIBUTE_DIRECTORY)) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } ExAcquireResourceSharedLite(&Fcb->MainResource, TRUE); @@ -80,7 +80,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir if (Status != STATUS_SUCCESS) { CompleteContext = FALSE; - __leave; + _SEH2_LEAVE; } // @@ -103,7 +103,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir #endif Fcb->Header.IsFastIoPossible = Ext2IsFastIoPossible(Fcb); - } __finally { + } _SEH2_FINALLY { if (bFcbAcquired) { ExReleaseResourceLite(&Fcb->MainResource); @@ -119,7 +119,7 @@ Ext2LockControl (IN PEXT2_IRP_CONTEXT Ir Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/memory.c ext2_new/src/memory.c --- ext2_new1/src/memory.c 2015-06-09 19:36:45.344297700 +0300 +++ ext2_new/src/memory.c 2015-09-30 12:44:19.711659100 +0300 @@ -413,12 +413,12 @@ struct dentry *Ext2BuildEntry(PEXT2_VCB struct dentry *de = NULL; NTSTATUS Status = STATUS_INSUFFICIENT_RESOURCES; - __try { + _SEH2_TRY { de = Ext2AllocateEntry(); if (!de) { DEBUG(DL_ERR, ("Ext2BuildEntry: failed to allocate dentry.\n")); - __leave; + _SEH2_LEAVE; } de->d_sb = &Vcb->sb; if (Dcb) @@ -428,24 +428,24 @@ struct dentry *Ext2BuildEntry(PEXT2_VCB Oem.Buffer = ExAllocatePool(PagedPool, Oem.MaximumLength); if (!Oem.Buffer) { DEBUG(DL_ERR, ( "Ex2BuildEntry: failed to allocate OEM name.\n")); - __leave; + _SEH2_LEAVE; } de->d_name.name = Oem.Buffer; RtlZeroMemory(Oem.Buffer, Oem.MaximumLength); Status = Ext2UnicodeToOEM(Vcb, &Oem, FileName); if (!NT_SUCCESS(Status)) { DEBUG(DL_CP, ("Ext2BuildEntry: failed to convert %S to OEM.\n", FileName->Buffer)); - __leave; + _SEH2_LEAVE; } de->d_name.len = Oem.Length; - } __finally { + } _SEH2_FINALLY { if (!NT_SUCCESS(Status)) { if (de) Ext2FreeEntry(de); } - } + } _SEH2_END; return de; } @@ -495,7 +495,9 @@ Ext2JointExtents( IN PEXT2_EXTENT Extent ) { +#ifndef __REACTOS__ ULONG count = 0; +#endif PEXT2_EXTENT List = Chain; while (List->Next) { @@ -600,11 +602,11 @@ Ext2CheckExtent( VOID Ext2ClearAllExtents(PLARGE_MCB Zone) { - __try { + _SEH2_TRY { FsRtlTruncateLargeMcb(Zone, (LONGLONG)0); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); - } + } _SEH2_END; } @@ -632,17 +634,17 @@ Ext2AddVcbExtent ( Again: - __try { + _SEH2_TRY { rc = FsRtlAddLargeMcbEntry( &Vcb->Extents, Offset, Offset, Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -682,16 +684,16 @@ Ext2RemoveVcbExtent ( Again: - __try { + _SEH2_TRY { FsRtlRemoveLargeMcbEntry( &Vcb->Extents, Offset, Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -777,7 +779,7 @@ Ext2AddMcbExtent ( Again: - __try { + _SEH2_TRY { rc = FsRtlAddLargeMcbEntry( &Mcb->Extents, @@ -786,11 +788,11 @@ Again: Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -832,16 +834,16 @@ Ext2RemoveMcbExtent ( Again: - __try { + _SEH2_TRY { FsRtlRemoveLargeMcbEntry( &Mcb->Extents, Vbn, Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -915,7 +917,7 @@ Ext2AddMcbMetaExts ( Again: - __try { + _SEH2_TRY { rc = FsRtlAddLargeMcbEntry( &Mcb->MetaExts, @@ -924,11 +926,11 @@ Again: Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -959,7 +961,7 @@ Ext2RemoveMcbMetaExts ( Again: - __try { + _SEH2_TRY { FsRtlRemoveLargeMcbEntry( &Mcb->MetaExts, @@ -967,10 +969,10 @@ Again: Length ); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { DbgBreak(); rc = FALSE; - } + } _SEH2_END; if (!rc && ++TriedTimes < 10) { Ext2Sleep(TriedTimes * 100); @@ -1451,13 +1453,13 @@ Ext2AllocateMcb ( } /* initialize Mcb Extents, it will raise an expcetion if failed */ - __try { + _SEH2_TRY { FsRtlInitializeLargeMcb(&(Mcb->Extents), NonPagedPool); FsRtlInitializeLargeMcb(&(Mcb->MetaExts), NonPagedPool); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { Status = STATUS_INSUFFICIENT_RESOURCES; DbgBreak(); - } + } _SEH2_END; if (!NT_SUCCESS(Status)) { goto errorout; @@ -1493,8 +1495,9 @@ errorout: VOID Ext2FreeMcb (IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb) { +#ifndef __REACTOS__ PEXT2_MCB Parent = Mcb->Parent; - +#endif ASSERT(Mcb != NULL); ASSERT((Mcb->Identifier.Type == EXT2MCB) && @@ -1558,15 +1561,15 @@ Ext2SearchMcb( BOOLEAN LockAcquired = FALSE; PEXT2_MCB Mcb = NULL; - __try { + _SEH2_TRY { ExAcquireResourceSharedLite(&Vcb->McbLock, TRUE); LockAcquired = TRUE; Mcb = Ext2SearchMcbWithoutLock(Parent, FileName); - } __finally { + } _SEH2_FINALLY { if (LockAcquired) { ExReleaseResourceLite(&Vcb->McbLock); } - } + } _SEH2_END; return Mcb; } @@ -1582,14 +1585,14 @@ Ext2SearchMcbWithoutLock( DEBUG(DL_RES, ("Ext2SearchMcb: %wZ\n", FileName)); - __try { + _SEH2_TRY { Ext2ReferMcb(Parent); if (Ext2IsDot(FileName)) { TmpMcb = Parent; Ext2ReferMcb(Parent); - __leave; + _SEH2_LEAVE; } if (Ext2IsDotDot(FileName)) { @@ -1601,7 +1604,7 @@ Ext2SearchMcbWithoutLock( if (TmpMcb) { Ext2ReferMcb(TmpMcb); } - __leave; + _SEH2_LEAVE; } if (IsMcbSymLink(Parent)) { @@ -1610,7 +1613,7 @@ Ext2SearchMcbWithoutLock( ASSERT(!IsMcbSymLink(Parent->Target)); } else { TmpMcb = NULL; - __leave; + _SEH2_LEAVE; } } else { TmpMcb = Parent->Child; @@ -1628,10 +1631,10 @@ Ext2SearchMcbWithoutLock( TmpMcb = TmpMcb->Next; } - } __finally { + } _SEH2_FINALLY { Ext2DerefMcb(Parent); - } + } _SEH2_END; return TmpMcb; } @@ -1646,7 +1649,7 @@ Ext2InsertMcb ( BOOLEAN LockAcquired = FALSE; PEXT2_MCB Mcb = NULL; - __try { + _SEH2_TRY { ExAcquireResourceExclusiveLite( &Vcb->McbLock, @@ -1688,12 +1691,12 @@ Ext2InsertMcb ( SetLongFlag(Child->Flags, MCB_ENTRY_TREE); } - } __finally { + } _SEH2_FINALLY { if (LockAcquired) { ExReleaseResourceLite(&Vcb->McbLock); } - } + } _SEH2_END; } BOOLEAN @@ -1706,7 +1709,7 @@ Ext2RemoveMcb ( BOOLEAN LockAcquired = FALSE; BOOLEAN bLinked = FALSE; - __try { + _SEH2_TRY { ExAcquireResourceExclusiveLite(&Vcb->McbLock, TRUE); LockAcquired = TRUE; @@ -1750,12 +1753,12 @@ Ext2RemoveMcb ( Mcb->de->d_parent = NULL; } - } __finally { + } _SEH2_FINALLY { if (LockAcquired) { ExReleaseResourceLite(&Vcb->McbLock); } - } + } _SEH2_END; return TRUE; } @@ -1766,14 +1769,14 @@ Ext2CleanupAllMcbs(PEXT2_VCB Vcb) BOOLEAN LockAcquired = FALSE; PEXT2_MCB Mcb = NULL; - __try { + _SEH2_TRY { ExAcquireResourceExclusiveLite( &Vcb->McbLock, TRUE ); LockAcquired = TRUE; - while (Mcb = Ext2FirstUnusedMcb(Vcb, TRUE, Vcb->NumOfMcb)) { + while ((Mcb = Ext2FirstUnusedMcb(Vcb, TRUE, Vcb->NumOfMcb)) != 0) { while (Mcb) { PEXT2_MCB Next = Mcb->Next; if (IsMcbSymLink(Mcb)) { @@ -1786,12 +1789,12 @@ Ext2CleanupAllMcbs(PEXT2_VCB Vcb) Ext2FreeMcb(Vcb, Vcb->McbTree); Vcb->McbTree = NULL; - } __finally { + } _SEH2_FINALLY { if (LockAcquired) { ExReleaseResourceLite(&Vcb->McbLock); } - } + } _SEH2_END; } BOOLEAN @@ -2149,7 +2152,7 @@ Ext2PerformRegistryVolumeParams(IN PEXT2 memcpy(Vcb->Codepage.AnsiName, Ext2Global->Codepage.AnsiName, CODEPAGE_MAXLEN); Vcb->Codepage.PageTable = Ext2Global->Codepage.PageTable; - if (Vcb->bHidingPrefix = Ext2Global->bHidingPrefix) { + if ((Vcb->bHidingPrefix = Ext2Global->bHidingPrefix) != 0) { RtlCopyMemory( Vcb->sHidingPrefix, Ext2Global->sHidingPrefix, HIDINGPAT_LEN); @@ -2158,7 +2161,7 @@ Ext2PerformRegistryVolumeParams(IN PEXT2 HIDINGPAT_LEN); } - if (Vcb->bHidingSuffix = Ext2Global->bHidingSuffix) { + if ((Vcb->bHidingSuffix = Ext2Global->bHidingSuffix) != 0) { RtlCopyMemory( Vcb->sHidingSuffix, Ext2Global->sHidingSuffix, HIDINGPAT_LEN); @@ -2256,11 +2259,11 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT BOOLEAN ExtentsInitialized = FALSE; BOOLEAN InodeLookasideInitialized = FALSE; - __try { + _SEH2_TRY { if (Vpb == NULL) { Status = STATUS_DEVICE_NOT_READY; - __leave; + _SEH2_LEAVE; } /* checking in/compat features */ @@ -2271,7 +2274,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT /* don't mount any volumes with external journal devices */ if (IsFlagOn(sb->s_feature_incompat, EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)) { Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } /* check block size */ @@ -2279,7 +2282,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT /* we cannot handle volume with block size bigger than 64k */ if (Vcb->BlockSize > EXT2_MAX_USER_BLKSIZE) { Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } if (Vcb->BlockSize >= PAGE_SIZE) { @@ -2380,7 +2383,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT if (!NT_SUCCESS(Ext2PerformRegistryVolumeParams(Vcb))) { /* don't mount this volume */ Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } } @@ -2428,7 +2431,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT &IoctlSize ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } Vcb->ChangeCount = ChangeCount; @@ -2436,7 +2439,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT Vcb->Volume = IoCreateStreamFileObject(NULL, Vcb->Vpb->RealDevice); if (!Vcb->Volume) { Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } /* initialize streaming object file */ @@ -2461,14 +2464,14 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT /* initialize disk block LargetMcb and entry Mcb, it will raise an expcetion if failed */ - __try { + _SEH2_TRY { FsRtlInitializeLargeMcb(&(Vcb->Extents), PagedPool); - } __except (EXCEPTION_EXECUTE_HANDLER) { + } _SEH2_EXCEPT (EXCEPTION_EXECUTE_HANDLER) { Status = STATUS_INSUFFICIENT_RESOURCES; DbgBreak(); - } + } _SEH2_END; if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } ExtentsInitialized = TRUE; @@ -2484,7 +2487,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT Vcb->BlockSize, 0, 0, NULL); if (!Vcb->bd.bd_bh_cache) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } Vcb->SectorBits = Ext2Log2(SECTOR_SIZE); @@ -2506,7 +2509,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT !is_power_of_2(Vcb->sbi.s_desc_size)) { DEBUG(DL_ERR, ("EXT4-fs: unsupported descriptor size %lu\n", Vcb->sbi.s_desc_size)); Status = STATUS_DISK_CORRUPT_ERROR; - __leave; + _SEH2_LEAVE; } } else { Vcb->sbi.s_desc_size = EXT4_MIN_DESC_SIZE; @@ -2516,12 +2519,12 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT Vcb->sbi.s_inodes_per_group = sb->s_inodes_per_group; if (EXT3_INODES_PER_GROUP(&Vcb->sb) == 0) { Status = STATUS_DISK_CORRUPT_ERROR; - __leave; + _SEH2_LEAVE; } Vcb->sbi.s_inodes_per_block = BLOCK_SIZE / Vcb->InodeSize; if (Vcb->sbi.s_inodes_per_block == 0) { Status = STATUS_DISK_CORRUPT_ERROR; - __leave; + _SEH2_LEAVE; } Vcb->sbi.s_itb_per_group = Vcb->sbi.s_inodes_per_group / Vcb->sbi.s_inodes_per_block; @@ -2559,7 +2562,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT "unsupported optional features (%x).\n", Vcb->sb.s_id, le32_to_cpu(features)); Status = STATUS_UNRECOGNIZED_VOLUME; - __leave; + _SEH2_LEAVE; } features = EXT3_HAS_RO_COMPAT_FEATURE(&Vcb->sb, ~EXT4_FEATURE_RO_COMPAT_SUPP); @@ -2606,7 +2609,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT /* load all gorup desc */ if (!Ext2LoadGroup(Vcb)) { Status = STATUS_UNSUCCESSFUL; - __leave; + _SEH2_LEAVE; } /* recovery journal since it's ext3 */ @@ -2629,14 +2632,14 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT if (!Vcb->McbTree) { DbgBreak(); Status = STATUS_UNSUCCESSFUL; - __leave; + _SEH2_LEAVE; } Vcb->sb.s_root = Ext2BuildEntry(Vcb, NULL, &RootNode); if (!Vcb->sb.s_root) { DbgBreak(); Status = STATUS_UNSUCCESSFUL; - __leave; + _SEH2_LEAVE; } Vcb->sb.s_root->d_sb = &Vcb->sb; Vcb->sb.s_root->d_inode = &Vcb->McbTree->Inode; @@ -2648,7 +2651,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT if (!Ext2LoadInode(Vcb, &Vcb->McbTree->Inode)) { DbgBreak(); Status = STATUS_CANT_WAIT; - __leave; + _SEH2_LEAVE; } /* initializeroot node */ @@ -2666,7 +2669,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT ObReferenceObject(Vcb->TargetDeviceObject); SetLongFlag(Vcb->Flags, VCB_INITIALIZED); - } __finally { + } _SEH2_FINALLY { if (!NT_SUCCESS(Status)) { @@ -2703,7 +2706,7 @@ Ext2InitializeVcb( IN PEXT2_IRP_CONTEXT ExDeleteResourceLite(&Vcb->PagingIoResource); } } - } + } _SEH2_END; return Status; } @@ -2941,7 +2944,7 @@ Ext2FirstUnusedMcb(PEXT2_VCB Vcb, BOOLEA /* Reaper thread to release unused Mcb blocks */ -VOID +VOID NTAPI Ext2ReaperThread( PVOID Context ) @@ -2960,7 +2963,7 @@ Ext2ReaperThread( ULONG i, NumOfMcbs; - __try { + _SEH2_TRY { /* wake up DirverEntry */ KeSetEvent(&Ext2Global->Reaper.Engine, 0, FALSE); @@ -3049,12 +3052,12 @@ Ext2ReaperThread( } } - } __finally { + } _SEH2_FINALLY { if (GlobalAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); } - } + } _SEH2_END; PsTerminateSystemThread(STATUS_SUCCESS); } diff -prudN ext2_new1/src/pnp.c ext2_new/src/pnp.c --- ext2_new1/src/pnp.c 2015-06-09 19:36:45.453370300 +0300 +++ ext2_new/src/pnp.c 2015-09-30 11:23:13.060042600 +0300 @@ -19,7 +19,7 @@ extern PEXT2_GLOBAL Ext2Global; /* DEFINITIONS *************************************************************/ -NTSTATUS +NTSTATUS NTAPI Ext2PnpCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -38,7 +38,7 @@ Ext2PnpCompletionRoutine ( /* FUNCTIONS *************************************************************/ -NTSTATUS +NTSTATUS NTAPI Ext2PnpCompletionRoutine ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -66,7 +66,7 @@ Ext2Pnp (IN PEXT2_IRP_CONTEXT IrpContext PEXT2_VCB Vcb; PDEVICE_OBJECT DeviceObject; - __try { + _SEH2_TRY { ASSERT(IrpContext); @@ -81,7 +81,7 @@ Ext2Pnp (IN PEXT2_IRP_CONTEXT IrpContext if ( !((Vcb->Identifier.Type == EXT2VCB) && (Vcb->Identifier.Size == sizeof(EXT2_VCB)))) { - __leave; // Status = STATUS_INVALID_PARAMETER + _SEH2_LEAVE; // Status = STATUS_INVALID_PARAMETER } Irp = IrpContext->Irp; @@ -120,7 +120,7 @@ Ext2Pnp (IN PEXT2_IRP_CONTEXT IrpContext break; } - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Irp = IrpContext->Irp; @@ -140,7 +140,7 @@ Ext2Pnp (IN PEXT2_IRP_CONTEXT IrpContext Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -157,7 +157,7 @@ Ext2PnpQueryRemove ( BOOLEAN bDeleted = FALSE; BOOLEAN VcbAcquired = FALSE; - __try { + _SEH2_TRY { CcWaitForCurrentLazyWriterActivity(); @@ -180,7 +180,7 @@ Ext2PnpQueryRemove ( Ext2PurgeVolume(Vcb, TRUE); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } IoCopyCurrentIrpStackLocationToNext(IrpContext->Irp); @@ -213,7 +213,7 @@ Ext2PnpQueryRemove ( DEBUG(DL_PNP, ("Ext2PnpQueryRemove: Ext2FlushVolume bDelted=%xh ...\n", bDeleted)); } - } __finally { + } _SEH2_FINALLY { if (VcbAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -225,7 +225,7 @@ Ext2PnpQueryRemove ( IO_DISK_INCREMENT : IO_NO_INCREMENT) ); IrpContext->Irp = NULL; - } + } _SEH2_END; return Status; } @@ -239,7 +239,7 @@ Ext2PnpRemove ( KEVENT Event; BOOLEAN bDeleted; - __try { + _SEH2_TRY { DEBUG(DL_PNP, ("Ext2PnpRemove by Ext2Pnp ...\n")); @@ -284,7 +284,7 @@ Ext2PnpRemove ( bDeleted = Ext2CheckDismount(IrpContext, Vcb, TRUE); SetLongFlag(Vcb->Flags, VCB_DEVICE_REMOVED); - } __finally { + } _SEH2_FINALLY { IrpContext->Irp->IoStatus.Status = Status; Ext2CompleteRequest( @@ -292,7 +292,7 @@ Ext2PnpRemove ( IO_DISK_INCREMENT : IO_NO_INCREMENT) ); IrpContext->Irp = NULL; - } + } _SEH2_END; return Status; } @@ -307,7 +307,7 @@ Ext2PnpSurpriseRemove ( KEVENT Event; BOOLEAN bDeleted; - __try { + _SEH2_TRY { DEBUG(DL_PNP, ("Ext2PnpSupriseRemove by Ext2Pnp ...\n")); @@ -354,7 +354,7 @@ Ext2PnpSurpriseRemove ( bDeleted = Ext2CheckDismount(IrpContext, Vcb, TRUE); SetLongFlag(Vcb->Flags, VCB_DEVICE_REMOVED); - } __finally { + } _SEH2_FINALLY { IrpContext->Irp->IoStatus.Status = Status; Ext2CompleteRequest( @@ -362,7 +362,7 @@ Ext2PnpSurpriseRemove ( IO_DISK_INCREMENT : IO_NO_INCREMENT) ); IrpContext->Irp = NULL; - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/read.c ext2_new/src/read.c --- ext2_new1/src/read.c 2015-06-09 19:36:45.456372200 +0300 +++ ext2_new/src/read.c 2015-09-29 19:52:32.776342300 +0300 @@ -86,7 +86,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp PUCHAR Buffer = NULL; EXT2_EXTENT BlockArray; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -105,7 +105,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp if (!(FcbOrVcb->Identifier.Type == EXT2VCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; @@ -127,20 +127,20 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp if (Length == 0) { Irp->IoStatus.Information = 0; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) { ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC); Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } if (ByteOffset.QuadPart >= Vcb->PartitionInformation.PartitionLength.QuadPart ) { Irp->IoStatus.Information = 0; Status = STATUS_END_OF_FILE; - __leave; + _SEH2_LEAVE; } if (ByteOffset.QuadPart + Length > Vcb->Header.FileSize.QuadPart) { @@ -157,7 +157,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp &Vcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } MainResourceAcquired = TRUE; @@ -199,7 +199,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp if (Buffer == NULL) { DbgBreak(); Status = STATUS_INVALID_USER_BUFFER; - __leave; + _SEH2_LEAVE; } if (!CcCopyRead( @@ -210,7 +210,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp Buffer, &Irp->IoStatus )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } Status = Irp->IoStatus.Status; @@ -225,7 +225,7 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp IoWriteAccess ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } BlockArray.Irp = NULL; @@ -241,11 +241,11 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp Irp = IrpContext->Irp; if (!Irp) { - __leave; + _SEH2_LEAVE; } } - } __finally { + } _SEH2_FINALLY { if (MainResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -292,19 +292,19 @@ Ext2ReadVolume (IN PEXT2_IRP_CONTEXT Irp Ext2FreeIrpContext(IrpContext); } } - } + } _SEH2_END; return Status; } #define SafeZeroMemory(AT,BYTE_COUNT) { \ - __try { \ + _SEH2_TRY { \ if (AT) \ RtlZeroMemory((AT), (BYTE_COUNT)); \ - } __except(EXCEPTION_EXECUTE_HANDLER) { \ + } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { \ Ext2RaiseStatus( IrpContext, STATUS_INVALID_USER_BUFFER ); \ - } \ + } _SEH2_END; \ } NTSTATUS @@ -330,7 +330,7 @@ Ext2ReadInode ( *BytesRead = 0; } - __try { + _SEH2_TRY { Ext2ReferMcb(Mcb); @@ -339,7 +339,7 @@ Ext2ReadInode ( if ((Mcb->Identifier.Type != EXT2MCB) || (Mcb->Identifier.Size != sizeof(EXT2_MCB))) { - __leave; + _SEH2_LEAVE; } if (Buffer == NULL && IrpContext != NULL) @@ -354,7 +354,7 @@ Ext2ReadInode ( if (!Buffer) { Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } if (Offset < EXT2_LINKLEN_IN_INODE) { @@ -365,7 +365,7 @@ Ext2ReadInode ( } else { Status = STATUS_END_OF_FILE; } - __leave; + _SEH2_LEAVE; } // @@ -389,13 +389,13 @@ Ext2ReadInode ( ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } if (Chain == NULL) { SafeZeroMemory((PCHAR)Buffer, Size); Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } /* for sparse file, we need zero the gaps */ @@ -452,14 +452,14 @@ Ext2ReadInode ( } } - } __finally { + } _SEH2_FINALLY { if (Chain) { Ext2DestroyExtentChain(Chain); } Ext2DerefMcb(Mcb); - } + } _SEH2_END; if (NT_SUCCESS(Status)) { if (BytesRead) @@ -497,7 +497,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon PUCHAR Buffer; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -537,13 +537,13 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon if ((IsSymLink(Fcb) && IsFileDeleted(Fcb->Mcb->Target)) || IsFileDeleted(Fcb->Mcb)) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } if (Length == 0) { Irp->IoStatus.Information = 0; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (Nocache && @@ -551,14 +551,14 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon Length & (SECTOR_SIZE - 1))) { Status = STATUS_INVALID_PARAMETER; DbgBreak(); - __leave; + _SEH2_LEAVE; } if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) { ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC); Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } if (!PagingIo && Nocache && (FileObject->SectionObjectPointer->DataSectionObject != NULL)) { @@ -568,7 +568,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon &Irp->IoStatus ); if (!NT_SUCCESS(Irp->IoStatus.Status)) { - __leave; + _SEH2_LEAVE; } } @@ -580,7 +580,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon &Fcb->PagingIoResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } PagingIoResourceAcquired = TRUE; @@ -592,7 +592,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon &Fcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } MainResourceAcquired = TRUE; @@ -602,7 +602,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon &Fcb->MainResource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } MainResourceAcquired = TRUE; } @@ -611,7 +611,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon &Fcb->FileLockAnchor, Irp )) { Status = STATUS_FILE_LOCK_CONFLICT; - __leave; + _SEH2_LEAVE; } } @@ -619,14 +619,13 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon if (ByteOffset.QuadPart >= Fcb->Header.FileSize.QuadPart) { Irp->IoStatus.Information = 0; Status = STATUS_END_OF_FILE; - __leave; + _SEH2_LEAVE; } ReturnedLength = (ULONG)(Fcb->Header.FileSize.QuadPart - ByteOffset.QuadPart); } if (!IsDirectory(Fcb) && Ccb != NULL) { - Status = FsRtlCheckOplock( &Fcb->Oplock, Irp, IrpContext, @@ -635,7 +634,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon if (Status != STATUS_SUCCESS) { OpPostIrp = TRUE; - __leave; + _SEH2_LEAVE; } // @@ -648,7 +647,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon if (!Nocache) { if (IsDirectory(Fcb)) { - __leave; + _SEH2_LEAVE; } if (FileObject->PrivateCacheMap == NULL) { @@ -679,7 +678,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon if (Buffer == NULL) { Status = STATUS_INVALID_USER_BUFFER; DbgBreak(); - __leave; + _SEH2_LEAVE; } if (!CcCopyRead(FileObject, &ByteOffset, ReturnedLength, @@ -690,7 +689,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon Buffer, &Irp->IoStatus)) { Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } } Status = Irp->IoStatus.Status; @@ -709,7 +708,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon } Irp->IoStatus.Information = ReturnedLength; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } else { BytesRead = (ULONG)(Fcb->Header.ValidDataLength.QuadPart - ByteOffset.QuadPart); if (SystemVA) { @@ -724,7 +723,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon IoReadAccess ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } Status = Ext2ReadInode( @@ -740,13 +739,13 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon /* we need re-queue this request in case STATUS_CANT_WAIT and fail it in other failure cases */ if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } /* pended by low level device */ if (Status == STATUS_PENDING) { IrpContext->Irp = Irp = NULL; - __leave; + _SEH2_LEAVE; } Irp = IrpContext->Irp; @@ -760,7 +759,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon Irp->IoStatus.Information = ReturnedLength; - } __finally { + } _SEH2_FINALLY { if (Irp) { if (PagingIoResourceAcquired) { @@ -807,7 +806,7 @@ Ext2ReadFile(IN PEXT2_IRP_CONTEXT IrpCon Ext2FreeIrpContext(IrpContext); } } - } + } _SEH2_END; DEBUG(DL_IO, ("Ext2ReadFile: %wZ fetch at Off=%I64xh Len=%xh Paging=%xh Nocache=%xh Returned=%xh Status=%xh\n", &Fcb->Mcb->ShortName, ByteOffset.QuadPart, Length, PagingIo, Nocache, ReturnedLength, Status)); @@ -822,7 +821,7 @@ Ext2ReadComplete (IN PEXT2_IRP_CONTEXT I PFILE_OBJECT FileObject; PIRP Irp; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -835,12 +834,12 @@ Ext2ReadComplete (IN PEXT2_IRP_CONTEXT I Irp->MdlAddress = NULL; Status = STATUS_SUCCESS; - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -861,7 +860,7 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex ASSERT((IrpContext->Identifier.Type == EXT2ICX) && (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); - __try { + _SEH2_TRY { if (FlagOn(IrpContext->MinorFunction, IRP_MN_COMPLETE)) { @@ -875,7 +874,7 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; bCompleteRequest = TRUE; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -884,7 +883,7 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex Status = STATUS_INVALID_DEVICE_REQUEST; bCompleteRequest = TRUE; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; @@ -892,7 +891,7 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED) && Vcb->LockFile != FileObject ) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } FcbOrVcb = (PEXT2_FCBVCB) FileObject->FsContext; @@ -907,7 +906,7 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { Status = STATUS_TOO_LATE; bCompleteRequest = TRUE; - __leave; + _SEH2_LEAVE; } Status = Ext2ReadFile(IrpContext); @@ -921,11 +920,11 @@ Ext2Read (IN PEXT2_IRP_CONTEXT IrpContex } } - } __finally { + } _SEH2_FINALLY { if (bCompleteRequest) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } diff -prudN ext2_new1/src/shutdown.c ext2_new/src/shutdown.c --- ext2_new1/src/shutdown.c 2015-06-09 19:36:45.460376600 +0300 +++ ext2_new/src/shutdown.c 2015-09-14 20:23:43.374592200 +0300 @@ -33,7 +33,7 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpCo BOOLEAN GlobalResourceAcquired = FALSE; - __try { + _SEH2_TRY { Status = STATUS_SUCCESS; @@ -47,7 +47,7 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpCo &Ext2Global->Resource, IsFlagOn(IrpContext->Flags, IRP_CONTEXT_FLAG_WAIT) )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } GlobalResourceAcquired = TRUE; @@ -99,7 +99,7 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpCo IoUnregisterFileSystem(Ext2Global->CdromdevObject); */ - } __finally { + } _SEH2_FINALLY { if (GlobalResourceAcquired) { ExReleaseResourceLite(&Ext2Global->Resource); @@ -112,7 +112,7 @@ Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpCo Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } \ No newline at end of file diff -prudN ext2_new1/src/volinfo.c ext2_new/src/volinfo.c --- ext2_new1/src/volinfo.c 2015-06-09 19:36:45.467379300 +0300 +++ ext2_new/src/volinfo.c 2015-09-14 20:24:28.611115400 +0300 @@ -36,7 +36,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP PVOID Buffer; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -49,7 +49,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -59,7 +59,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (!IsMounted(Vcb)) { Status = STATUS_VOLUME_DISMOUNTED; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceSharedLite( @@ -68,7 +68,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } VcbResourceAcquired = TRUE; @@ -92,7 +92,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (Length < sizeof(FILE_FS_VOLUME_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FsVolInfo = (PFILE_FS_VOLUME_INFORMATION) Buffer; @@ -110,7 +110,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP Irp->IoStatus.Information = sizeof(FILE_FS_VOLUME_INFORMATION); Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } RtlCopyMemory(FsVolInfo->VolumeLabel, Vcb->Vpb->VolumeLabel, Vcb->Vpb->VolumeLabelLength); @@ -126,7 +126,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (Length < sizeof(FILE_FS_SIZE_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FsSizeInfo = (PFILE_FS_SIZE_INFORMATION) Buffer; @@ -150,7 +150,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (Length < sizeof(FILE_FS_DEVICE_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FsDevInfo = (PFILE_FS_DEVICE_INFORMATION) Buffer; @@ -181,7 +181,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (Length < sizeof(FILE_FS_ATTRIBUTE_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } FsAttrInfo = @@ -201,7 +201,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP Irp->IoStatus.Information = sizeof(FILE_FS_ATTRIBUTE_INFORMATION); Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(SUPER_BLOCK->s_feature_incompat, EXT4_FEATURE_INCOMPAT_EXTENTS)) { @@ -225,7 +225,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP if (Length < sizeof(FILE_FS_FULL_SIZE_INFORMATION)) { Status = STATUS_BUFFER_OVERFLOW; - __leave; + _SEH2_LEAVE; } PFFFSI = (PFILE_FS_FULL_SIZE_INFORMATION) Buffer; @@ -269,7 +269,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP break; } - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -282,7 +282,7 @@ Ext2QueryVolumeInformation (IN PEXT2_IRP Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } @@ -298,7 +298,7 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C FS_INFORMATION_CLASS FsInformationClass; BOOLEAN VcbResourceAcquired = FALSE; - __try { + _SEH2_TRY { ASSERT(IrpContext != NULL); @@ -312,7 +312,7 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C // if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension; @@ -323,13 +323,13 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite( &Vcb->MainResource, TRUE)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } VcbResourceAcquired = TRUE; @@ -358,7 +358,7 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C if (VolLabelLen > (16 * sizeof(WCHAR))) { Status = STATUS_INVALID_VOLUME_LABEL; - __leave; + _SEH2_LEAVE; } RtlCopyMemory( Vcb->Vpb->VolumeLabel, @@ -389,7 +389,7 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C Status = STATUS_INVALID_INFO_CLASS; } - } __finally { + } _SEH2_FINALLY { if (VcbResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -402,7 +402,7 @@ Ext2SetVolumeInformation (IN PEXT2_IRP_C Ext2CompleteIrpContext(IrpContext, Status); } } - } + } _SEH2_END; return Status; } \ No newline at end of file diff -prudN ext2_new1/src/write.c ext2_new/src/write.c --- ext2_new1/src/write.c 2015-06-09 19:36:45.470381500 +0300 +++ ext2_new/src/write.c 2015-10-06 09:42:23.339729200 +0300 @@ -33,10 +33,10 @@ typedef struct _EXT2_FLPFLUSH_CONTEXT { } EXT2_FLPFLUSH_CONTEXT, *PEXT2_FLPFLUSH_CONTEXT; -VOID +VOID NTAPI Ext2FloppyFlush(IN PVOID Parameter); -VOID +VOID NTAPI Ext2FloppyFlushDpc ( IN PKDPC Dpc, IN PVOID DeferredContext, @@ -59,7 +59,7 @@ Ext2DeferWrite(IN PEXT2_IRP_CONTEXT, PIR /* FUNCTIONS *************************************************************/ -VOID +VOID NTAPI Ext2FloppyFlush(IN PVOID Parameter) { PEXT2_FLPFLUSH_CONTEXT Context; @@ -98,7 +98,7 @@ Ext2FloppyFlush(IN PVOID Parameter) Ext2FreePool(Parameter, EXT2_FLPFLUSH_MAGIC); } -VOID +VOID NTAPI Ext2FloppyFlushDpc ( IN PKDPC Dpc, IN PVOID DeferredContext, @@ -175,8 +175,9 @@ Ext2ZeroData ( PBCB Bcb; PVOID Ptr; ULONG Size; +#ifndef __REACTOS__ BOOLEAN rc = TRUE; - +#endif ASSERT (End && Start && End->QuadPart > Start->QuadPart); Fcb = (PEXT2_FCB) FileObject->FsContext; @@ -235,7 +236,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir PEXT2_EXTENT Chain = NULL; EXT2_EXTENT BlockArray; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -253,7 +254,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir if (!(FcbOrVcb->Identifier.Type == EXT2VCB && (PVOID)FcbOrVcb == (PVOID)Vcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } Ccb = (PEXT2_CCB) FileObject->FsContext2; @@ -277,27 +278,27 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir if (Length == 0) { Irp->IoStatus.Information = 0; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (Nocache && (ByteOffset.LowPart & (SECTOR_SIZE - 1) || Length & (SECTOR_SIZE - 1))) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) { ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC); Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } if (ByteOffset.QuadPart >= Vcb->PartitionInformation.PartitionLength.QuadPart ) { Irp->IoStatus.Information = 0; Status = STATUS_END_OF_FILE; - __leave; + _SEH2_LEAVE; } if (!Nocache) { @@ -328,7 +329,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir bDeferred = TRUE; Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } } } @@ -369,7 +370,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir if (!NT_SUCCESS(Irp->IoStatus.Status)) { Status = Irp->IoStatus.Status; - __leave; + _SEH2_LEAVE; } ExAcquireSharedStarveExclusive(&Vcb->PagingIoResource, TRUE); @@ -408,7 +409,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir DbgBreak(); Status = STATUS_INVALID_USER_BUFFER; - __leave; + _SEH2_LEAVE; } if (!CcCopyWrite( Vcb->Volume, @@ -417,7 +418,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir TRUE, Buffer )) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } Status = Irp->IoStatus.Status; @@ -442,7 +443,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir Status = Ext2LockUserBuffer(IrpContext->Irp, Length, IoReadAccess); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } DirtyLba = ByteOffset.QuadPart; @@ -477,7 +478,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir if (!Extent) { DEBUG(DL_ERR, ( "Ex2WriteVolume: failed to allocate Extent\n")); Status = STATUS_INSUFFICIENT_RESOURCES; - __leave; + _SEH2_LEAVE; } Extent->Irp = NULL; @@ -535,14 +536,14 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir } if (!Irp) { - __leave; + _SEH2_LEAVE; } } else { Irp->IoStatus.Information = Length; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } } else { @@ -555,7 +556,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir IoWriteAccess ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } BlockArray.Irp = NULL; @@ -575,11 +576,11 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir Irp = IrpContext->Irp; if (!Irp) { - __leave; + _SEH2_LEAVE; } } - } __finally { + } _SEH2_FINALLY { if (MainResourceAcquired) { ExReleaseResourceLite(&Vcb->MainResource); @@ -630,7 +631,7 @@ Ext2WriteVolume (IN PEXT2_IRP_CONTEXT Ir if (Chain) { Ext2DestroyExtentChain(Chain); } - } + } _SEH2_END; return Status; } @@ -650,7 +651,7 @@ Ext2WriteInode ( PEXT2_EXTENT Chain = NULL; NTSTATUS Status = STATUS_UNSUCCESSFUL; - __try { + _SEH2_TRY { if (BytesWritten) { *BytesWritten = 0; @@ -667,12 +668,12 @@ Ext2WriteInode ( ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } if (Chain == NULL) { Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (bDirectIo) { @@ -702,7 +703,7 @@ Ext2WriteInode ( Extent->Length, (PVOID)((PUCHAR)Buffer + Extent->Offset) )) { - __leave; + _SEH2_LEAVE; } } @@ -715,7 +716,7 @@ Ext2WriteInode ( Status = STATUS_SUCCESS; } - } __finally { + } _SEH2_FINALLY { if (Chain) { Ext2DestroyExtentChain(Chain); @@ -724,7 +725,7 @@ Ext2WriteInode ( if (NT_SUCCESS(Status) && BytesWritten) { *BytesWritten = Size; } - } + } _SEH2_END; return Status; } @@ -759,12 +760,14 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo BOOLEAN PagingIoResourceAcquired = FALSE; BOOLEAN bDeferred = FALSE; +#ifndef __REACTOS__ BOOLEAN UpdateFileValidSize = FALSE; +#endif BOOLEAN FileSizesChanged = FALSE; BOOLEAN rc; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -802,31 +805,31 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (IsSpecialFile(Fcb)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } if (IsFileDeleted(Fcb->Mcb) || (IsSymLink(Fcb) && IsFileDeleted(Fcb->Mcb->Target)) ) { Status = STATUS_FILE_DELETED; - __leave; + _SEH2_LEAVE; } if (Length == 0) { Irp->IoStatus.Information = 0; Status = STATUS_SUCCESS; - __leave; + _SEH2_LEAVE; } if (Nocache && ( (ByteOffset.LowPart & (SECTOR_SIZE - 1)) || (Length & (SECTOR_SIZE - 1))) ) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (FlagOn(IrpContext->MinorFunction, IRP_MN_DPC)) { ClearFlag(IrpContext->MinorFunction, IRP_MN_DPC); Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } if (!Nocache) { @@ -856,7 +859,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo bAgain ); bDeferred = TRUE; Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } } } @@ -867,7 +870,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (IsDirectory(Fcb) && !PagingIo) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } if (IsFlagOn(Irp->Flags, IRP_SYNCHRONOUS_PAGING_IO) && !IrpContext->IsTopLevel) { @@ -897,7 +900,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!ExAcquireResourceSharedLite(&Fcb->PagingIoResource, TRUE)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } PagingIoResourceAcquired = TRUE; @@ -907,7 +910,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo Status = STATUS_END_OF_FILE; Irp->IoStatus.Information = 0; - __leave; + _SEH2_LEAVE; } else { @@ -918,12 +921,12 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo } else { if (IsDirectory(Fcb)) { - __leave; + _SEH2_LEAVE; } if (!ExAcquireResourceExclusiveLite(&Fcb->MainResource, TRUE)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } MainResourceAcquired = TRUE; @@ -943,7 +946,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!NT_SUCCESS(Irp->IoStatus.Status)) { Status = Irp->IoStatus.Status; - __leave; + _SEH2_LEAVE; } ExAcquireSharedStarveExclusive( &Fcb->PagingIoResource, TRUE); @@ -957,11 +960,10 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!FsRtlCheckLockForWriteAccess(&Fcb->FileLockAnchor, Irp)) { Status = STATUS_FILE_LOCK_CONFLICT; - __leave; + _SEH2_LEAVE; } if (Ccb != NULL) { - Status = FsRtlCheckOplock( &Fcb->Oplock, Irp, IrpContext, @@ -970,7 +972,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (Status != STATUS_SUCCESS) { OpPostIrp = TRUE; - __leave; + _SEH2_LEAVE; } // @@ -990,7 +992,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!ExAcquireResourceExclusiveLite(&Fcb->PagingIoResource, TRUE)) { Status = STATUS_PENDING; - __leave; + _SEH2_LEAVE; } PagingIoResourceAcquired = TRUE; @@ -1020,7 +1022,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo DbgBreak(); Status = STATUS_UNSUCCESSFUL; } - __leave; + _SEH2_LEAVE; } if (ByteOffset.QuadPart + Length > Fcb->Header.AllocationSize.QuadPart) { @@ -1083,7 +1085,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (Buffer == NULL) { DbgBreak(); Status = STATUS_INVALID_USER_BUFFER; - __leave; + _SEH2_LEAVE; } if (ByteOffset.QuadPart > Fcb->Header.ValidDataLength.QuadPart) { @@ -1096,7 +1098,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!rc) { Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } } @@ -1105,7 +1107,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo !CcCopyWrite(FileObject, &ByteOffset, Length, TRUE, Buffer)) { Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } } @@ -1147,7 +1149,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo if (!rc) { Status = STATUS_PENDING; DbgBreak(); - __leave; + _SEH2_LEAVE; } } } @@ -1159,7 +1161,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo IoReadAccess ); if (!NT_SUCCESS(Status)) { - __leave; + _SEH2_LEAVE; } Irp->IoStatus.Status = STATUS_SUCCESS; @@ -1209,7 +1211,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo FILE_ACTION_MODIFIED ); } - } __finally { + } _SEH2_FINALLY { /* * in case we got excpetions, we need revert MajorFunction @@ -1260,7 +1262,7 @@ Ext2WriteFile(IN PEXT2_IRP_CONTEXT IrpCo Ext2FreeIrpContext(IrpContext); } } - } + } _SEH2_END; DEBUG(DL_IO, ("Ext2WriteFile: %wZ written at Offset=%I64xh Length=%xh PagingIo=%d Nocache=%d " "RetLen=%xh VDL=%I64xh FileSize=%I64xh i_size=%I64xh Status=%xh\n", @@ -1279,7 +1281,7 @@ Ext2WriteComplete (IN PEXT2_IRP_CONTEXT PIRP Irp; PIO_STACK_LOCATION IrpSp; - __try { + _SEH2_TRY { ASSERT(IrpContext); ASSERT((IrpContext->Identifier.Type == EXT2ICX) && @@ -1294,12 +1296,12 @@ Ext2WriteComplete (IN PEXT2_IRP_CONTEXT Irp->MdlAddress = NULL; Status = STATUS_SUCCESS; - } __finally { + } _SEH2_FINALLY { if (!IrpContext->ExceptionInProgress) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; } @@ -1320,7 +1322,7 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpConte ASSERT((IrpContext->Identifier.Type == EXT2ICX) && (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT))); - __try { + _SEH2_TRY { if (IsFlagOn(IrpContext->MinorFunction, IRP_MN_COMPLETE)) { @@ -1332,7 +1334,7 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpConte DeviceObject = IrpContext->DeviceObject; if (IsExt2FsDevice(DeviceObject)) { Status = STATUS_INVALID_DEVICE_REQUEST; - __leave; + _SEH2_LEAVE; } FileObject = IrpContext->FileObject; @@ -1341,18 +1343,18 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpConte if (Vcb->Identifier.Type != EXT2VCB || Vcb->Identifier.Size != sizeof(EXT2_VCB) ) { Status = STATUS_INVALID_PARAMETER; - __leave; + _SEH2_LEAVE; } if (IsVcbReadOnly(Vcb)) { Status = STATUS_MEDIA_WRITE_PROTECTED; - __leave; + _SEH2_LEAVE; } if (FlagOn(Vcb->Flags, VCB_VOLUME_LOCKED) && Vcb->LockFile != FileObject ) { Status = STATUS_ACCESS_DENIED; - __leave; + _SEH2_LEAVE; } FcbOrVcb = (PEXT2_FCBVCB) FileObject->FsContext; @@ -1369,7 +1371,7 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpConte if (IsFlagOn(Vcb->Flags, VCB_DISMOUNT_PENDING)) { Status = STATUS_TOO_LATE; - __leave; + _SEH2_LEAVE; } Status = Ext2WriteFile(IrpContext); @@ -1383,12 +1385,12 @@ Ext2Write (IN PEXT2_IRP_CONTEXT IrpConte } } - } __finally { + } _SEH2_FINALLY { if (bCompleteRequest) { Ext2CompleteIrpContext(IrpContext, Status); } - } + } _SEH2_END; return Status; }