convert message back to wchar
This commit is contained in:
		@@ -39,6 +39,8 @@ Windows Registry Editor Version 5.00
 | 
			
		||||
#include <mutex>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <locale>
 | 
			
		||||
#include <codecvt>
 | 
			
		||||
 | 
			
		||||
namespace spdlog {
 | 
			
		||||
namespace sinks {
 | 
			
		||||
@@ -55,34 +57,20 @@ struct win32_error : public spdlog_ex
 | 
			
		||||
    {
 | 
			
		||||
        std::string system_message;
 | 
			
		||||
 | 
			
		||||
        auto fFormatResult = [&system_message](bool format_message_succeeded, void* format_message_result)
 | 
			
		||||
        {
 | 
			
		||||
            if (format_message_succeeded && format_message_result)
 | 
			
		||||
            {
 | 
			
		||||
                system_message = fmt::format(" ({})", format_message_result);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (format_message_result)
 | 
			
		||||
            {
 | 
			
		||||
                LocalFree((HLOCAL)format_message_result);
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
 | 
			
		||||
        LPWSTR format_message_result{};
 | 
			
		||||
        auto format_message_succeeded =
 | 
			
		||||
            ::FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr,
 | 
			
		||||
                error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&format_message_result, 0, nullptr);
 | 
			
		||||
 | 
			
		||||
        fFormatResult(format_message_succeeded, format_message_result);
 | 
			
		||||
#else
 | 
			
		||||
        LPSTR format_message_result{};
 | 
			
		||||
        auto format_message_succeeded =
 | 
			
		||||
            ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr,
 | 
			
		||||
                error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&format_message_result, 0, nullptr);
 | 
			
		||||
 | 
			
		||||
        fFormatResult(format_message_succeeded, format_message_result);
 | 
			
		||||
#endif
 | 
			
		||||
        if (format_message_succeeded && format_message_result)
 | 
			
		||||
        {
 | 
			
		||||
            system_message = fmt::format(" ({})", format_message_result);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (format_message_result)
 | 
			
		||||
        {
 | 
			
		||||
            LocalFree((HLOCAL)format_message_result);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return fmt::format("{}: {}{}", user_message, error_code, system_message);
 | 
			
		||||
    }
 | 
			
		||||
@@ -238,10 +226,10 @@ protected:
 | 
			
		||||
        formatted.push_back('\0');
 | 
			
		||||
 | 
			
		||||
#ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
 | 
			
		||||
            LPCWSTR lp_str = reinterpret_cast<LPCWSTR>(formatted.data());
 | 
			
		||||
            auto buf = std::wstring_convert<std::codecvt_utf8<wchar_t>>().from_bytes(formatted.data());
 | 
			
		||||
 | 
			
		||||
            succeeded = ::ReportEventW(event_log_handle(), eventlog::get_event_type(msg), eventlog::get_event_category(msg), event_id_,
 | 
			
		||||
                current_user_sid_.as_sid(), 1, 0, &lp_str, nullptr);
 | 
			
		||||
                current_user_sid_.as_sid(), 1, 0, (LPCWSTR*)buf.c_str(), nullptr);
 | 
			
		||||
#else
 | 
			
		||||
            LPCSTR lp_str = reinterpret_cast<LPCSTR>(formatted.data());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user