diff --git a/src/sys/driver.h b/src/sys/driver.h index 0813e980..8a8ff57a 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -21,21 +21,27 @@ /* enter/leave*/ #if DBG -#define FSP_DEBUGLOG(rfmt, r, fmt, ...) \ +BOOLEAN HasDbgBreakPoint(const char *Function); +const char *NtStatusSym(NTSTATUS Status); +#define FSP_DEBUGLOG_(rfmt, r, fmt, ...)\ DbgPrint(AbnormalTermination() ? \ DRIVER_NAME "!" __FUNCTION__ "(" fmt ") = !AbnormalTermination\n" :\ DRIVER_NAME "!" __FUNCTION__ "(" fmt ")" rfmt "\n",\ __VA_ARGS__, r) +#define FSP_DEBUGBRK_() \ + do \ + { \ + if (HasDbgBreakPoint(__FUNCTION__))\ + try { DbgBreakPoint(); } except(EXCEPTION_EXECUTE_HANDLER) {}\ + } while (0,0) #else -#define FSP_DEBUGLOG(rfmt, r, fmt, ...) ((void)0) +#define FSP_DEBUGLOG_(rfmt, r, fmt, ...)((void)0) +#define FSP_DEBUGBRK_() ((void)0) #endif -#if DBG -BOOLEAN HasDbgBreakPoint(const char *Function); -const char *NtStatusSym(NTSTATUS Status); #define FSP_ENTER_(...) \ - if (HasDbgBreakPoint(__FUNCTION__)) \ - try { DbgBreakPoint(); } except(EXCEPTION_EXECUTE_HANDLER) {}\ + FSP_DEBUGBRK_(); \ __VA_ARGS__; \ + FsRtlEnterFileSystem(); \ try \ { #define FSP_LEAVE_(rfmt, r, fmt, ...) \ @@ -44,17 +50,9 @@ const char *NtStatusSym(NTSTATUS Status); } \ finally \ { \ - FSP_DEBUGLOG(rfmt, r, fmt, __VA_ARGS__);\ + FsRtlExitFileSystem(); \ + FSP_DEBUGLOG_(rfmt, r, fmt, __VA_ARGS__);\ } -#else -#define FSP_ENTER_(...) \ - __VA_ARGS__; \ - { -#define FSP_LEAVE_(rfmt, r, fmt, ...) \ - goto fsp_leave_label; \ - fsp_leave_label:; \ - } -#endif #define FSP_ENTER(...) \ NTSTATUS Result = STATUS_SUCCESS; FSP_ENTER_(__VA_ARGS__) #define FSP_LEAVE(fmt, ...) \ diff --git a/tools/deploy.bat b/tools/deploy.bat index 11dc96c6..8f9ab4c3 100644 --- a/tools/deploy.bat +++ b/tools/deploy.bat @@ -1,5 +1,6 @@ @echo off +set CONFIG=Debug set DRIVER=winfsp-x64.sys set TARGET_MACHINE=WIN8DBG set TARGET_ACCOUNT=\Users\%USERNAME%\Downloads\winfsp\ @@ -8,6 +9,6 @@ set TARGET=\\%TARGET_MACHINE%%TARGET_ACCOUNT% echo on cd %~dp0.. mkdir %TARGET% 2>nul -copy build\VStudio\build\Debug\%DRIVER% %TARGET% +copy build\VStudio\build\%CONFIG%\%DRIVER% %TARGET% echo sc create winfsp type=filesys binPath=%%~dp0%DRIVER% >%TARGET%sc-create.bat echo sc delete winfsp >%TARGET%sc-delete.bat