From 4c102ab57cdf843ed110a907a5ae3568eb74d3b2 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Thu, 13 Apr 2017 22:19:17 -0700 Subject: [PATCH] inc: winfsp.hpp: SetDebugLogFile --- inc/winfsp/winfsp.hpp | 20 ++++++++++++++++++++ tst/passthrough-cpp/passthrough-cpp.cpp | 16 ++-------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/inc/winfsp/winfsp.hpp b/inc/winfsp/winfsp.hpp index 815da3e9..8a7602d6 100644 --- a/inc/winfsp/winfsp.hpp +++ b/inc/winfsp/winfsp.hpp @@ -53,6 +53,26 @@ inline DWORD Win32FromNtStatus(NTSTATUS Status) return FspWin32FromNtStatus(Status); } +inline NTSTATUS SetDebugLogFile(PWSTR FileName) +{ + HANDLE Handle; + if ('-' == FileName[0] && '\0' == FileName[1]) + Handle = GetStdHandle(STD_ERROR_HANDLE); + else + Handle = CreateFileW( + FileName, + FILE_APPEND_DATA, + FILE_SHARE_READ | FILE_SHARE_WRITE, + 0, + OPEN_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + 0); + if (INVALID_HANDLE_VALUE == Handle) + return FspNtStatusFromWin32(GetLastError()); + FspDebugLogSetHandle(Handle); + return STATUS_SUCCESS; +} + class FileSystem { public: diff --git a/tst/passthrough-cpp/passthrough-cpp.cpp b/tst/passthrough-cpp/passthrough-cpp.cpp index d95c10ce..7e03a9ba 100644 --- a/tst/passthrough-cpp/passthrough-cpp.cpp +++ b/tst/passthrough-cpp/passthrough-cpp.cpp @@ -942,24 +942,12 @@ NTSTATUS PtfsService::OnStart(ULONG argc, PWSTR *argv) if (0 != DebugLogFile) { - if (0 == wcscmp(L"-", DebugLogFile)) - DebugLogHandle = GetStdHandle(STD_ERROR_HANDLE); - else - DebugLogHandle = CreateFileW( - DebugLogFile, - FILE_APPEND_DATA, - FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, - OPEN_ALWAYS, - FILE_ATTRIBUTE_NORMAL, - 0); - if (INVALID_HANDLE_VALUE == DebugLogHandle) + Result = SetDebugLogFile(DebugLogFile); + if (!NT_SUCCESS(Result)) { fail(L"cannot open debug log file"); goto usage; } - - FspDebugLogSetHandle(DebugLogHandle); } Ptfs = new ::Ptfs;