sys: FSP_ENTER, FSP_LEAVE now do FsRtlEnterFileSystem, FsRtlExitFileSystem

This commit is contained in:
Bill Zissimopoulos 2015-11-18 15:34:03 -08:00
parent 280c41eef4
commit 9fe93bfb5d
2 changed files with 17 additions and 18 deletions

View File

@ -21,21 +21,27 @@
/* enter/leave*/ /* enter/leave*/
#if DBG #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() ? \ DbgPrint(AbnormalTermination() ? \
DRIVER_NAME "!" __FUNCTION__ "(" fmt ") = !AbnormalTermination\n" :\ DRIVER_NAME "!" __FUNCTION__ "(" fmt ") = !AbnormalTermination\n" :\
DRIVER_NAME "!" __FUNCTION__ "(" fmt ")" rfmt "\n",\ DRIVER_NAME "!" __FUNCTION__ "(" fmt ")" rfmt "\n",\
__VA_ARGS__, r) __VA_ARGS__, r)
#define FSP_DEBUGBRK_() \
do \
{ \
if (HasDbgBreakPoint(__FUNCTION__))\
try { DbgBreakPoint(); } except(EXCEPTION_EXECUTE_HANDLER) {}\
} while (0,0)
#else #else
#define FSP_DEBUGLOG(rfmt, r, fmt, ...) ((void)0) #define FSP_DEBUGLOG_(rfmt, r, fmt, ...)((void)0)
#define FSP_DEBUGBRK_() ((void)0)
#endif #endif
#if DBG
BOOLEAN HasDbgBreakPoint(const char *Function);
const char *NtStatusSym(NTSTATUS Status);
#define FSP_ENTER_(...) \ #define FSP_ENTER_(...) \
if (HasDbgBreakPoint(__FUNCTION__)) \ FSP_DEBUGBRK_(); \
try { DbgBreakPoint(); } except(EXCEPTION_EXECUTE_HANDLER) {}\
__VA_ARGS__; \ __VA_ARGS__; \
FsRtlEnterFileSystem(); \
try \ try \
{ {
#define FSP_LEAVE_(rfmt, r, fmt, ...) \ #define FSP_LEAVE_(rfmt, r, fmt, ...) \
@ -44,17 +50,9 @@ const char *NtStatusSym(NTSTATUS Status);
} \ } \
finally \ 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(...) \ #define FSP_ENTER(...) \
NTSTATUS Result = STATUS_SUCCESS; FSP_ENTER_(__VA_ARGS__) NTSTATUS Result = STATUS_SUCCESS; FSP_ENTER_(__VA_ARGS__)
#define FSP_LEAVE(fmt, ...) \ #define FSP_LEAVE(fmt, ...) \

View File

@ -1,5 +1,6 @@
@echo off @echo off
set CONFIG=Debug
set DRIVER=winfsp-x64.sys set DRIVER=winfsp-x64.sys
set TARGET_MACHINE=WIN8DBG set TARGET_MACHINE=WIN8DBG
set TARGET_ACCOUNT=\Users\%USERNAME%\Downloads\winfsp\ set TARGET_ACCOUNT=\Users\%USERNAME%\Downloads\winfsp\
@ -8,6 +9,6 @@ set TARGET=\\%TARGET_MACHINE%%TARGET_ACCOUNT%
echo on echo on
cd %~dp0.. cd %~dp0..
mkdir %TARGET% 2>nul 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 create winfsp type=filesys binPath=%%~dp0%DRIVER% >%TARGET%sc-create.bat
echo sc delete winfsp >%TARGET%sc-delete.bat echo sc delete winfsp >%TARGET%sc-delete.bat