diff --git a/src/controls.cpp b/src/controls.cpp index 50df6728..21a1a3a1 100644 --- a/src/controls.cpp +++ b/src/controls.cpp @@ -3,14 +3,14 @@ #include "global.hpp" -void _app_settab_id (HWND hwnd, INT page_id) +VOID _app_settab_id (HWND hwnd, INT page_id) { if (!page_id || ((INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT) == page_id && IsWindowVisible (GetDlgItem (hwnd, page_id)))) return; for (INT i = 0; i < (INT)SendDlgItemMessage (hwnd, IDC_TAB, TCM_GETITEMCOUNT, 0, 0); i++) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); if (listview_id == page_id) { @@ -22,24 +22,22 @@ void _app_settab_id (HWND hwnd, INT page_id) _app_settab_id (hwnd, IDC_APPS_PROFILE); } -UINT _app_getinterfacestatelocale (EnumInstall install_type) +UINT _app_getinterfacestatelocale (ENUM_INSTALL_TYPE install_type) { - if (install_type == InstallDisabled) - return IDS_STATUS_FILTERS_INACTIVE; - - else if (install_type == InstallEnabled) + if (install_type == InstallEnabled) return IDS_STATUS_FILTERS_ACTIVE; else if (install_type == InstallEnabledTemporary) return IDS_STATUS_FILTERS_ACTIVE_TEMP; - return 0; + // InstallDisabled + return IDS_STATUS_FILTERS_INACTIVE; } -bool _app_initinterfacestate (HWND hwnd, bool is_forced) +BOOLEAN _app_initinterfacestate (HWND hwnd, BOOLEAN is_forced) { if (!hwnd) - return false; + return FALSE; if (is_forced || !!SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_ISBUTTONENABLED, IDM_TRAY_START, 0)) { @@ -48,13 +46,13 @@ bool _app_initinterfacestate (HWND hwnd, bool is_forced) _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (IDS_STATUS_FILTERS_PROCESSING, L"...")); - return true; + return TRUE; } - return false; + return FALSE; } -void _app_restoreinterfacestate (HWND hwnd, bool is_enabled) +VOID _app_restoreinterfacestate (HWND hwnd, BOOLEAN is_enabled) { if (!is_enabled) return; @@ -62,20 +60,21 @@ void _app_restoreinterfacestate (HWND hwnd, bool is_enabled) SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_ENABLEBUTTON, IDM_TRAY_START, MAKELPARAM (TRUE, 0)); SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_ENABLEBUTTON, IDM_REFRESH, MAKELPARAM (TRUE, 0)); - const EnumInstall install_type = _wfp_isfiltersinstalled (); + ENUM_INSTALL_TYPE install_type = _wfp_isfiltersinstalled (); - _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), nullptr)); + _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), NULL)); } -void _app_setinterfacestate (HWND hwnd) +VOID _app_setinterfacestate (HWND hwnd) { - const EnumInstall install_type = _wfp_isfiltersinstalled (); + ENUM_INSTALL_TYPE install_type = _wfp_isfiltersinstalled (); - const bool is_filtersinstalled = (install_type != InstallDisabled); - const INT icon_id = is_filtersinstalled ? IDI_ACTIVE : IDI_INACTIVE; + BOOLEAN is_filtersinstalled = (install_type != InstallDisabled); + INT icon_id = is_filtersinstalled ? IDI_ACTIVE : IDI_INACTIVE; + UINT string_id = is_filtersinstalled ? IDS_TRAY_STOP : IDS_TRAY_START; - const HICON hico_sm = app.GetSharedImage (app.GetHINSTANCE (), icon_id, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)); - const HICON hico_big = app.GetSharedImage (app.GetHINSTANCE (), icon_id, _r_dc_getsystemmetrics (hwnd, SM_CXICON)); + HICON hico_sm = app.GetSharedImage (app.GetHINSTANCE (), icon_id, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)); + HICON hico_big = app.GetSharedImage (app.GetHINSTANCE (), icon_id, _r_dc_getsystemmetrics (hwnd, SM_CXICON)); SendMessage (hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hico_sm); SendMessage (hwnd, WM_SETICON, ICON_BIG, (LPARAM)hico_big); @@ -83,32 +82,32 @@ void _app_setinterfacestate (HWND hwnd) //SendDlgItemMessage (hwnd, IDC_STATUSBAR, SB_SETICON, 0, (LPARAM)hico_sm); if (!_wfp_isfiltersapplying ()) - _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), nullptr)); + _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), NULL)); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_START, app.LocaleString (is_filtersinstalled ? IDS_TRAY_STOP : IDS_TRAY_START, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, is_filtersinstalled ? 1 : 0); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_START, app.LocaleString (string_id, NULL), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, is_filtersinstalled ? 1 : 0); _r_tray_setinfo (hwnd, UID, hico_sm, APP_NAME); } -void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) +VOID _app_listviewresize (HWND hwnd, INT listview_id, BOOLEAN is_forced) { - if (!listview_id || (!is_forced && !app.ConfigGet (L"AutoSizeColumns", true).AsBool ())) + if (!listview_id || (!is_forced && !app.ConfigGetBoolean (L"AutoSizeColumns", TRUE))) return; - const INT column_count = _r_listview_getcolumncount (hwnd, listview_id); + INT column_count = _r_listview_getcolumncount (hwnd, listview_id); if (!column_count) return; - const HWND hlistview = GetDlgItem (hwnd, listview_id); - const HWND hheader = (HWND)SendMessage (hlistview, LVM_GETHEADER, 0, 0); + HWND hlistview = GetDlgItem (hwnd, listview_id); + HWND hheader = (HWND)SendMessage (hlistview, LVM_GETHEADER, 0, 0); RECT rc_client = {0}; GetClientRect (hlistview, &rc_client); // get device context and fix font set - const HDC hdc_listview = GetDC (hlistview); - const HDC hdc_header = GetDC (hheader); + HDC hdc_listview = GetDC (hlistview); + HDC hdc_header = GetDC (hheader); if (hdc_listview) SelectObject (hdc_listview, (HFONT)SendMessage (hlistview, WM_GETFONT, 0, 0)); // fix @@ -121,12 +120,12 @@ void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) // set general column id INT column_general_id = 0; - const bool is_tableview = (SendMessage (hlistview, LVM_GETVIEW, 0, 0) == LV_VIEW_DETAILS); + BOOLEAN is_tableview = ((INT)SendMessage (hlistview, LVM_GETVIEW, 0, 0) == LV_VIEW_DETAILS); - const INT total_width = _R_RECT_WIDTH (&rc_client); + INT total_width = _r_calc_rectwidth (INT, &rc_client); - const INT max_width = _r_dc_getdpi (hwnd, 158); - const INT spacing = _r_dc_getsystemmetrics (hwnd, SM_CXSMICON); + INT max_width = _r_dc_getdpi (hwnd, 158); + INT spacing = _r_dc_getsystemmetrics (hwnd, SM_CXSMICON); for (INT i = 0; i < column_count; i++) { @@ -134,7 +133,7 @@ void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) continue; // get column text width - const rstring column_text = _r_listview_getcolumntext (hwnd, listview_id, i); + rstring column_text = _r_listview_getcolumntext (hwnd, listview_id, i); INT column_width = _r_dc_fontwidth (hdc_header, column_text, column_text.GetLength ()) + spacing; if (column_width >= max_width) @@ -146,10 +145,10 @@ void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) // calculate max width of listview subitems (only for details view) if (is_tableview) { - for (INT j = 0; j < _r_listview_getitemcount (hwnd, listview_id); j++) + for (INT j = 0; j < _r_listview_getitemcount (hwnd, listview_id, FALSE); j++) { - const rstring item_text = _r_listview_getitemtext (hwnd, listview_id, j, i); - const INT text_width = _r_dc_fontwidth (hdc_listview, item_text, item_text.GetLength ()) + spacing; + rstring item_text = _r_listview_getitemtext (hwnd, listview_id, j, i); + INT text_width = _r_dc_fontwidth (hdc_listview, item_text, item_text.GetLength ()) + spacing; // do not continue reaching higher and higher values for performance reason! if (text_width >= max_width) @@ -164,13 +163,13 @@ void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) } } - _r_listview_setcolumn (hwnd, listview_id, i, nullptr, column_width); + _r_listview_setcolumn (hwnd, listview_id, i, NULL, column_width); calculated_width += column_width; } // set general column width - _r_listview_setcolumn (hwnd, listview_id, column_general_id, nullptr, (std::max)(total_width - calculated_width, max_width)); + _r_listview_setcolumn (hwnd, listview_id, column_general_id, NULL, max (total_width - calculated_width, max_width)); if (hdc_listview) ReleaseDC (hlistview, hdc_listview); @@ -179,13 +178,13 @@ void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced) ReleaseDC (hheader, hdc_header); } -void _app_listviewsetview (HWND hwnd, INT listview_id) +VOID _app_listviewsetview (HWND hwnd, INT listview_id) { - const bool is_mainview = (listview_id >= IDC_APPS_PROFILE) && (listview_id <= IDC_RULES_CUSTOM); - const INT view_type = is_mainview ? std::clamp (app.ConfigGet (L"ViewType", LV_VIEW_DETAILS).AsInt (), LV_VIEW_ICON, LV_VIEW_MAX) : LV_VIEW_DETAILS; + BOOLEAN is_mainview = (listview_id >= IDC_APPS_PROFILE) && (listview_id <= IDC_RULES_CUSTOM); + INT view_type = is_mainview ? _r_calc_clamp (INT, app.ConfigGetInteger (L"ViewType", LV_VIEW_DETAILS), LV_VIEW_ICON, LV_VIEW_MAX) : LV_VIEW_DETAILS; - const INT icons_size = (is_mainview || listview_id == IDC_NETWORK) ? std::clamp (app.ConfigGet (L"IconSize", SHIL_SYSSMALL).AsInt (), SHIL_LARGE, SHIL_LAST) : SHIL_SYSSMALL; - HIMAGELIST himg = nullptr; + INT icons_size = (is_mainview || listview_id == IDC_NETWORK) ? _r_calc_clamp (INT, app.ConfigGetInteger (L"IconSize", SHIL_SYSSMALL), SHIL_LARGE, SHIL_LAST) : SHIL_SYSSMALL; + HIMAGELIST himg = NULL; if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { @@ -197,7 +196,7 @@ void _app_listviewsetview (HWND hwnd, INT listview_id) } else { - SHGetImageList (icons_size, IID_IImageList2, (void**)&himg); + SHGetImageList (icons_size, IID_IImageList2, (LPVOID*)&himg); } if (himg) @@ -210,9 +209,9 @@ void _app_listviewsetview (HWND hwnd, INT listview_id) SendDlgItemMessage (hwnd, listview_id, LVM_SCROLL, 0, (LPARAM)GetScrollPos (GetDlgItem (hwnd, listview_id), SB_VERT)); // HACK!!! } -void _app_listviewinitfont (HWND hwnd, PLOGFONT plf) +VOID _app_listviewinitfont (HWND hwnd, PLOGFONT plf) { - const rstring buffer = app.ConfigGet (L"Font", UI_FONT_DEFAULT); + rstring buffer = app.ConfigGetString (L"Font", UI_FONT_DEFAULT); if (!buffer.IsEmpty ()) { @@ -225,10 +224,10 @@ void _app_listviewinitfont (HWND hwnd, PLOGFONT plf) if (rvc.size () >= 2) { - plf->lfHeight = _r_dc_fontsizetoheight (hwnd, rvc.at (1).AsInt ()); // size + plf->lfHeight = _r_dc_fontsizetoheight (hwnd, _r_str_tointeger (rvc.at (1))); // size if (rvc.size () >= 3) - plf->lfWeight = rvc.at (2).AsInt (); // weight + plf->lfWeight = _r_str_tointeger (rvc.at (2)); // weight } } } @@ -258,7 +257,7 @@ void _app_listviewinitfont (HWND hwnd, PLOGFONT plf) } } -void _app_listviewsetfont (HWND hwnd, INT listview_id, bool is_redraw) +VOID _app_listviewsetfont (HWND hwnd, INT listview_id, BOOLEAN is_redraw) { LOGFONT lf = {0}; @@ -277,27 +276,27 @@ void _app_listviewsetfont (HWND hwnd, INT listview_id, bool is_redraw) INT CALLBACK _app_listviewcompare_callback (LPARAM lparam1, LPARAM lparam2, LPARAM lparam) { - const HWND hlistview = (HWND)lparam; - const HWND hparent = GetParent (hlistview); - const INT listview_id = GetDlgCtrlID (hlistview); + HWND hlistview = (HWND)lparam; + HWND hparent = GetParent (hlistview); + INT listview_id = GetDlgCtrlID (hlistview); - const INT item1 = _app_getposition (hparent, listview_id, lparam1); - const INT item2 = _app_getposition (hparent, listview_id, lparam2); + INT item1 = _app_getposition (hparent, listview_id, lparam1); + INT item2 = _app_getposition (hparent, listview_id, lparam2); if (item1 == INVALID_INT || item2 == INVALID_INT) return 0; - const rstring cfg_name = _r_fmt (L"listview\\%04" PRIX32, listview_id); + rstring cfg_name = _r_fmt (L"listview\\%04" TEXT (PRIX32), listview_id); - const INT column_id = app.ConfigGet (L"SortColumn", 0, cfg_name).AsInt (); - const bool is_descend = app.ConfigGet (L"SortIsDescending", false, cfg_name).AsBool (); + INT column_id = app.ConfigGetInteger (L"SortColumn", 0, cfg_name); + BOOLEAN is_descend = app.ConfigGetBoolean (L"SortIsDescending", FALSE, cfg_name); INT result = 0; if ((SendMessage (hlistview, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) & LVS_EX_CHECKBOXES) != 0) { - const bool is_checked1 = _r_listview_isitemchecked (hparent, listview_id, item1); - const bool is_checked2 = _r_listview_isitemchecked (hparent, listview_id, item2); + BOOLEAN is_checked1 = _r_listview_isitemchecked (hparent, listview_id, item1); + BOOLEAN is_checked2 = _r_listview_isitemchecked (hparent, listview_id, item2); if (is_checked1 != is_checked2) { @@ -314,15 +313,15 @@ INT CALLBACK _app_listviewcompare_callback (LPARAM lparam1, LPARAM lparam2, LPAR // timestamp sorting if ((listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) && column_id == 1) { - const time_t* timestamp1 = (time_t*)_app_getappinfo (lparam1, InfoTimestampPtr); - const time_t* timestamp2 = (time_t*)_app_getappinfo (lparam2, InfoTimestampPtr); + time_t* timestamp1 = (time_t*)_app_getappinfo (lparam1, InfoTimestampPtr); + time_t* timestamp2 = (time_t*)_app_getappinfo (lparam2, InfoTimestampPtr); if (timestamp1 && timestamp2) { - if (*timestamp1 < *timestamp2) + if ((*timestamp1) < (*timestamp2)) result = -1; - else if (*timestamp1 > * timestamp2) + else if ((*timestamp1) > (*timestamp2)) result = 1; } } @@ -339,9 +338,9 @@ INT CALLBACK _app_listviewcompare_callback (LPARAM lparam1, LPARAM lparam2, LPAR return is_descend ? -result : result; } -void _app_listviewsort (HWND hwnd, INT listview_id, INT column_id, bool is_notifycode) +VOID _app_listviewsort (HWND hwnd, INT listview_id, INT column_id, BOOLEAN is_notifycode) { - const HWND hlistview = GetDlgItem (hwnd, listview_id); + HWND hlistview = GetDlgItem (hwnd, listview_id); if (!hlistview) return; @@ -349,26 +348,26 @@ void _app_listviewsort (HWND hwnd, INT listview_id, INT column_id, bool is_notif if ((GetWindowLongPtr (hlistview, GWL_STYLE) & (LVS_NOSORTHEADER | LVS_OWNERDATA)) != 0) return; - const INT column_count = _r_listview_getcolumncount (hwnd, listview_id); + INT column_count = _r_listview_getcolumncount (hwnd, listview_id); if (!column_count) return; - const rstring cfg_name = _r_fmt (L"listview\\%04" PRIX32, listview_id); - bool is_descend = app.ConfigGet (L"SortIsDescending", false, cfg_name).AsBool (); + rstring cfg_name = _r_fmt (L"listview\\%04" TEXT (PRIX32), listview_id); + BOOLEAN is_descend = app.ConfigGetBoolean (L"SortIsDescending", FALSE, cfg_name); if (is_notifycode) is_descend = !is_descend; if (column_id == INVALID_INT) - column_id = app.ConfigGet (L"SortColumn", 0, cfg_name).AsInt (); + column_id = app.ConfigGetInteger (L"SortColumn", 0, cfg_name); - column_id = std::clamp (column_id, 0, column_count - 1); // set range + column_id = _r_calc_clamp (INT, column_id, 0, column_count - 1); // set range if (is_notifycode) { - app.ConfigSet (L"SortIsDescending", is_descend, cfg_name); - app.ConfigSet (L"SortColumn", column_id, cfg_name); + app.ConfigSetBoolean (L"SortIsDescending", is_descend, cfg_name); + app.ConfigSetInteger (L"SortColumn", column_id, cfg_name); } for (INT i = 0; i < column_count; i++) @@ -379,7 +378,7 @@ void _app_listviewsort (HWND hwnd, INT listview_id, INT column_id, bool is_notif SendMessage (hlistview, LVM_SORTITEMS, (WPARAM)hlistview, (LPARAM)&_app_listviewcompare_callback); } -void _app_refreshgroups (HWND hwnd, INT listview_id) +VOID _app_refreshgroups (HWND hwnd, INT listview_id) { UINT group1_title; UINT group2_title; @@ -411,7 +410,7 @@ void _app_refreshgroups (HWND hwnd, INT listview_id) return; } - const INT total_count = _r_listview_getitemcount (hwnd, listview_id); + INT total_count = _r_listview_getitemcount (hwnd, listview_id, FALSE); INT group1_count = 0; INT group2_count = 0; @@ -447,20 +446,18 @@ void _app_refreshgroups (HWND hwnd, INT listview_id) } } - _r_listview_setgroup (hwnd, listview_id, 0, app.LocaleString (group1_title, total_count ? _r_fmt (L" (%d/%d)", group1_count, total_count).GetString () : nullptr), 0, 0); - _r_listview_setgroup (hwnd, listview_id, 1, app.LocaleString (group2_title, total_count ? _r_fmt (L" (%d/%d)", group2_count, total_count).GetString () : nullptr), 0, 0); - _r_listview_setgroup (hwnd, listview_id, 2, app.LocaleString (group3_title, total_count ? _r_fmt (L" (%d/%d)", group3_count, total_count).GetString () : nullptr), 0, 0); + _r_listview_setgroup (hwnd, listview_id, 0, app.LocaleString (group1_title, total_count ? _r_fmt (L" (%d/%d)", group1_count, total_count).GetString () : NULL), 0, 0); + _r_listview_setgroup (hwnd, listview_id, 1, app.LocaleString (group2_title, total_count ? _r_fmt (L" (%d/%d)", group2_count, total_count).GetString () : NULL), 0, 0); + _r_listview_setgroup (hwnd, listview_id, 2, app.LocaleString (group3_title, total_count ? _r_fmt (L" (%d/%d)", group3_count, total_count).GetString () : NULL), 0, 0); } -void _app_refreshstatus (HWND hwnd, INT listview_id) +VOID _app_refreshstatus (HWND hwnd, INT listview_id) { - PITEM_STATUS pstatus = (PITEM_STATUS)_r_mem_allocex (sizeof (ITEM_STATUS), HEAP_ZERO_MEMORY); + PITEM_STATUS pstatus = (PITEM_STATUS)_r_mem_allocatezero (sizeof (ITEM_STATUS)); + _app_getcount (pstatus); - if (pstatus) - _app_getcount (pstatus); - - const HWND hstatus = GetDlgItem (hwnd, IDC_STATUSBAR); - const HDC hdc = GetDC (hstatus); + HWND hstatus = GetDlgItem (hwnd, IDC_STATUSBAR); + HDC hdc = GetDC (hstatus); // item count if (hdc) @@ -468,7 +465,7 @@ void _app_refreshstatus (HWND hwnd, INT listview_id) SelectObject (hdc, (HFONT)SendMessage (hstatus, WM_GETFONT, 0, 0)); // fix const INT parts_count = 3; - const INT spacing = _r_dc_getdpi (hwnd, 12); + INT spacing = _r_dc_getdpi (hwnd, 12); rstring text[parts_count]; INT parts[parts_count] = {0}; @@ -482,7 +479,7 @@ void _app_refreshstatus (HWND hwnd, INT listview_id) case 1: { if (pstatus) - text[i].Format (L"%s: %" PR_SIZE_T, app.LocaleString (IDS_STATUS_UNUSED_APPS, nullptr).GetString (), pstatus->apps_unused_count); + text[i].Format (L"%s: %" TEXT (PR_SIZE_T), app.LocaleString (IDS_STATUS_UNUSED_APPS, NULL).GetString (), pstatus->apps_unused_count); break; } @@ -490,7 +487,7 @@ void _app_refreshstatus (HWND hwnd, INT listview_id) case 2: { if (pstatus) - text[i].Format (L"%s: %" PR_SIZE_T, app.LocaleString (IDS_STATUS_TIMER_APPS, nullptr).GetString (), pstatus->apps_timer_count); + text[i].Format (L"%s: %" TEXT (PR_SIZE_T), app.LocaleString (IDS_STATUS_TIMER_APPS, NULL).GetString (), pstatus->apps_timer_count); break; } @@ -506,7 +503,7 @@ void _app_refreshstatus (HWND hwnd, INT listview_id) RECT rc_client = {0}; GetClientRect (hstatus, &rc_client); - parts[0] = _R_RECT_WIDTH (&rc_client) - lay - _r_dc_getsystemmetrics (hwnd, SM_CXVSCROLL) - (_r_dc_getsystemmetrics (hwnd, SM_CXBORDER) * 2); + parts[0] = _r_calc_rectwidth (INT, &rc_client) - lay - _r_dc_getsystemmetrics (hwnd, SM_CXVSCROLL) - (_r_dc_getsystemmetrics (hwnd, SM_CXBORDER) * 2); parts[1] = parts[0] + size[1]; parts[2] = parts[1] + size[2]; @@ -541,23 +538,23 @@ INT _app_getposition (HWND hwnd, INT listview_id, LPARAM lparam) return (INT)SendDlgItemMessage (hwnd, listview_id, LVM_FINDITEM, (WPARAM)INVALID_INT, (LPARAM)&lvfi); } -void _app_showitem (HWND hwnd, INT listview_id, INT item, INT scroll_pos) +VOID _app_showitem (HWND hwnd, INT listview_id, INT item, INT scroll_pos) { - const HWND hlistview = GetDlgItem (hwnd, listview_id); + HWND hlistview = GetDlgItem (hwnd, listview_id); if (!hlistview) return; _app_settab_id (hwnd, listview_id); - const INT total_count = _r_listview_getitemcount (hwnd, listview_id); + INT total_count = _r_listview_getitemcount (hwnd, listview_id, FALSE); if (!total_count) return; if (item != INVALID_INT) { - item = std::clamp (item, 0, total_count - 1); + item = _r_calc_clamp (INT, item, 0, total_count - 1); PostMessage (hlistview, LVM_ENSUREVISIBLE, (WPARAM)item, TRUE); // ensure item visible @@ -569,9 +566,9 @@ void _app_showitem (HWND hwnd, INT listview_id, INT item, INT scroll_pos) PostMessage (hlistview, LVM_SCROLL, 0, (LPARAM)scroll_pos); // restore scroll position } -LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) +LONG_PTR _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) { - if (!app.ConfigGet (L"IsEnableHighlighting", true).AsBool ()) + if (!app.ConfigGetBoolean (L"IsEnableHighlighting", TRUE)) return CDRF_DODEFAULT; switch (lpnmlv->nmcd.dwDrawStage) @@ -583,14 +580,14 @@ LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) case CDDS_ITEMPREPAINT: { - const INT view_type = (INT)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, LVM_GETVIEW, 0, 0); - const bool is_tableview = (view_type == LV_VIEW_DETAILS || view_type == LV_VIEW_SMALLICON || view_type == LV_VIEW_TILE); + INT view_type = (INT)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, LVM_GETVIEW, 0, 0); + BOOLEAN is_tableview = (view_type == LV_VIEW_DETAILS || view_type == LV_VIEW_SMALLICON || view_type == LV_VIEW_TILE); - const INT listview_id = static_cast(lpnmlv->nmcd.hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->nmcd.hdr.idFrom); if ((listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) || listview_id == IDC_RULE_APPS_ID || listview_id == IDC_NETWORK || listview_id == IDC_LOG) { - size_t app_hash; + SIZE_T app_hash; if (listview_id == IDC_NETWORK) { @@ -607,7 +604,7 @@ LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) if (app_hash) { - const COLORREF new_clr = _app_getappcolor (listview_id, app_hash); + COLORREF new_clr = _app_getappcolor (listview_id, app_hash); if (new_clr) { @@ -623,7 +620,7 @@ LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { - const size_t rule_idx = lpnmlv->nmcd.lItemlParam; + SIZE_T rule_idx = lpnmlv->nmcd.lItemlParam; COLORREF new_clr = _app_getrulecolor (listview_id, rule_idx); @@ -641,11 +638,11 @@ LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) } else if (listview_id == IDC_COLORS) { - const PITEM_COLOR ptr_clr = (PITEM_COLOR)lpnmlv->nmcd.lItemlParam; + PITEM_COLOR ptr_clr = (PITEM_COLOR)lpnmlv->nmcd.lItemlParam; if (ptr_clr) { - const COLORREF new_clr = ptr_clr->new_clr ? ptr_clr->new_clr : ptr_clr->default_clr; + COLORREF new_clr = ptr_clr->new_clr ? ptr_clr->new_clr : ptr_clr->default_clr; if (new_clr) { @@ -667,7 +664,7 @@ LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv) return CDRF_DODEFAULT; } -LONG _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv) +LONG_PTR _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv) { switch (lpnmlv->nmcd.dwDrawStage) { @@ -698,12 +695,12 @@ LONG _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv) if (tbi.iImage != I_IMAGENONE) { - const HIMAGELIST himglist = (HIMAGELIST)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, TB_GETIMAGELIST, 0, 0); + HIMAGELIST himglist = (HIMAGELIST)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, TB_GETIMAGELIST, 0, 0); if (himglist) { - const DWORD padding = (DWORD)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, TB_GETPADDING, 0, 0); - const UINT rebar_height = (UINT)SendMessage (GetParent (lpnmlv->nmcd.hdr.hwndFrom), RB_GETBARHEIGHT, 0, 0); + DWORD padding = (DWORD)SendMessage (lpnmlv->nmcd.hdr.hwndFrom, TB_GETPADDING, 0, 0); + UINT rebar_height = (UINT)SendMessage (GetParent (lpnmlv->nmcd.hdr.hwndFrom), RB_GETBARHEIGHT, 0, 0); ImageList_GetIconSize (himglist, &icon_size_x, &icon_size_y); @@ -730,7 +727,7 @@ LONG _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv) if (tbi.iImage != I_IMAGENONE) lpnmlv->nmcd.rc.left += icon_size_x; - DrawTextEx (lpnmlv->nmcd.hdc, text, (INT)_r_str_length (text), &lpnmlv->nmcd.rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_HIDEPREFIX, nullptr); + DrawTextEx (lpnmlv->nmcd.hdc, text, (INT)_r_str_length (text), &lpnmlv->nmcd.rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_HIDEPREFIX, NULL); } return CDRF_SKIPDEFAULT; diff --git a/src/controls.hpp b/src/controls.hpp index 673db642..01fb7554 100644 --- a/src/controls.hpp +++ b/src/controls.hpp @@ -5,27 +5,27 @@ EXTERN_C const IID IID_IImageList2; -void _app_settab_id (HWND hwnd, INT page_id); +VOID _app_settab_id (HWND hwnd, INT page_id); -UINT _app_getinterfacestatelocale (EnumInstall install_type); -bool _app_initinterfacestate (HWND hwnd, bool is_forced); -void _app_restoreinterfacestate (HWND hwnd, bool is_enabled); -void _app_setinterfacestate (HWND hwnd); +UINT _app_getinterfacestatelocale (ENUM_INSTALL_TYPE install_type); +BOOLEAN _app_initinterfacestate (HWND hwnd, BOOLEAN is_forced); +VOID _app_restoreinterfacestate (HWND hwnd, BOOLEAN is_enabled); +VOID _app_setinterfacestate (HWND hwnd); -void _app_listviewresize (HWND hwnd, INT listview_id, bool is_forced); -void _app_listviewsetview (HWND hwnd, INT listview_id); +VOID _app_listviewresize (HWND hwnd, INT listview_id, BOOLEAN is_forced); +VOID _app_listviewsetview (HWND hwnd, INT listview_id); -void _app_listviewinitfont (HWND hwnd, PLOGFONT plf); -void _app_listviewsetfont (HWND hwnd, INT listview_id, bool is_redraw); +VOID _app_listviewinitfont (HWND hwnd, PLOGFONT plf); +VOID _app_listviewsetfont (HWND hwnd, INT listview_id, BOOLEAN is_redraw); INT CALLBACK _app_listviewcompare_callback (LPARAM lparam1, LPARAM lparam2, LPARAM lparam); -void _app_listviewsort (HWND hwnd, INT listview_id, INT column_id = INVALID_INT, bool is_notifycode = false); +VOID _app_listviewsort (HWND hwnd, INT listview_id, INT column_id, BOOLEAN is_notifycode); -void _app_refreshgroups (HWND hwnd, INT listview_id); -void _app_refreshstatus (HWND hwnd, INT listview_id = INVALID_INT); +VOID _app_refreshgroups (HWND hwnd, INT listview_id); +VOID _app_refreshstatus (HWND hwnd, INT listview_id); INT _app_getposition (HWND hwnd, INT listview_id, LPARAM lparam); -void _app_showitem (HWND hwnd, INT listview_id, INT item, INT scroll_pos = INVALID_INT); +VOID _app_showitem (HWND hwnd, INT listview_id, INT item, INT scroll_pos); -LONG _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv); -LONG _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv); +LONG_PTR _app_nmcustdraw_listview (LPNMLVCUSTOMDRAW lpnmlv); +LONG_PTR _app_nmcustdraw_toolbar (LPNMLVCUSTOMDRAW lpnmlv); diff --git a/src/editor.cpp b/src/editor.cpp index 896b6ad8..98d851a8 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -5,13 +5,13 @@ INT_PTR CALLBACK AddRuleProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { - static PEDITOR_CONTEXT pcontext; + static PITEM_CONTEXT pcontext; switch (msg) { case WM_INITDIALOG: { - pcontext = (PEDITOR_CONTEXT)lparam; + pcontext = (PITEM_CONTEXT)lparam; #if !defined(_APP_NO_DARKTHEME) _r_wnd_setdarktheme (hwnd); @@ -20,20 +20,20 @@ INT_PTR CALLBACK AddRuleProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) _r_wnd_center (hwnd, GetParent (hwnd)); // localize window - SetWindowText (hwnd, app.LocaleString (IDS_RULE, nullptr)); + SetWindowText (hwnd, app.LocaleString (IDS_RULE, NULL)); if (pcontext->item_id != INVALID_INT) SetDlgItemText (hwnd, IDC_RULE_ID, _r_listview_getitemtext (pcontext->hwnd, pcontext->listview_id, pcontext->item_id, 0)); SetDlgItemText (hwnd, IDC_RULE_HINT, L"eg. 192.168.0.1\r\neg. [fe80::]\r\neg. 192.168.0.1:443\r\neg. [fe80::]:443\r\neg. 192.168.0.1-192.168.0.255\r\neg. 192.168.0.1-192.168.0.255:443\r\neg. 192.168.0.0/16\r\neg. fe80::/10\r\neg. 80\r\neg. 443\r\neg. 20-21\r\neg. 49152-65534"); - SetDlgItemText (hwnd, IDC_SAVE, app.LocaleString (pcontext->item_id != INVALID_INT ? IDS_SAVE : IDS_ADD, nullptr)); - SetDlgItemText (hwnd, IDC_CLOSE, app.LocaleString (IDS_CLOSE, nullptr)); + SetDlgItemText (hwnd, IDC_SAVE, app.LocaleString (pcontext->item_id != INVALID_INT ? IDS_SAVE : IDS_ADD, NULL)); + SetDlgItemText (hwnd, IDC_CLOSE, app.LocaleString (IDS_CLOSE, NULL)); _r_wnd_addstyle (hwnd, IDC_SAVE, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_CLOSE, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); - _r_ctrl_enable (hwnd, IDC_SAVE, SendDlgItemMessage (hwnd, IDC_RULE_ID, WM_GETTEXTLENGTH, 0, 0) > 0); // enable apply button + _r_ctrl_enable (hwnd, IDC_SAVE, (INT)SendDlgItemMessage (hwnd, IDC_RULE_ID, WM_GETTEXTLENGTH, 0, 0) > 0); // enable apply button break; } @@ -58,8 +58,8 @@ INT_PTR CALLBACK AddRuleProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); - const INT notify_code = HIWORD (wparam); + INT ctrl_id = LOWORD (wparam); + INT notify_code = HIWORD (wparam); if (notify_code == EN_CHANGE) { @@ -81,18 +81,17 @@ INT_PTR CALLBACK AddRuleProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (rule_single.IsEmpty ()) return FALSE; - if (!_app_parserulestring (rule_single, nullptr)) + if (!_app_parserulestring (rule_single, NULL)) { - _r_ctrl_showtip (hwnd, IDC_RULE_ID, 0, nullptr, app.LocaleString (IDS_STATUS_SYNTAX_ERROR, nullptr)); - _r_ctrl_enable (hwnd, IDC_SAVE, false); + _r_ctrl_showtip (hwnd, IDC_RULE_ID, 0, NULL, app.LocaleString (IDS_STATUS_SYNTAX_ERROR, NULL)); + _r_ctrl_enable (hwnd, IDC_SAVE, FALSE); return FALSE; } if (pcontext->item_id == INVALID_INT) { - const INT new_item_id = _r_listview_getitemcount (pcontext->hwnd, pcontext->listview_id); - _r_listview_additem (pcontext->hwnd, pcontext->listview_id, new_item_id, 0, rule_single, I_IMAGENONE, I_GROUPIDNONE, new_item_id); + _r_listview_additem (pcontext->hwnd, pcontext->listview_id, INVALID_INT, 0, rule_single); } else { @@ -119,7 +118,7 @@ INT_PTR CALLBACK AddRuleProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { - static PITEM_RULE ptr_rule = nullptr; + static PITEM_RULE ptr_rule = NULL; switch (msg) { @@ -147,15 +146,15 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa SendDlgItemMessage (hwnd, IDC_RULE_NAME_ID, EM_SETREADONLY, ptr_rule->is_readonly, 0); } - const rstring text_any = app.LocaleString (IDS_ANY, nullptr); + rstring text_any = app.LocaleString (IDS_ANY, NULL); // direction if (GetDlgItem (hwnd, IDC_RULE_DIRECTION)) { SetDlgItemText (hwnd, IDC_RULE_DIRECTION, app.LocaleString (IDS_DIRECTION, L":")); - SetDlgItemText (hwnd, IDC_RULE_DIRECTION_OUTBOUND, app.LocaleString (IDS_DIRECTION_1, nullptr)); - SetDlgItemText (hwnd, IDC_RULE_DIRECTION_INBOUND, app.LocaleString (IDS_DIRECTION_2, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_DIRECTION_OUTBOUND, app.LocaleString (IDS_DIRECTION_1, NULL)); + SetDlgItemText (hwnd, IDC_RULE_DIRECTION_INBOUND, app.LocaleString (IDS_DIRECTION_2, NULL)); SetDlgItemText (hwnd, IDC_RULE_DIRECTION_ANY, text_any); if (ptr_rule->direction == FWP_DIRECTION_OUTBOUND) @@ -177,8 +176,8 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { SetDlgItemText (hwnd, IDC_RULE_ACTION, app.LocaleString (IDS_ACTION, L":")); - SetDlgItemText (hwnd, IDC_RULE_ACTION_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, nullptr)); - SetDlgItemText (hwnd, IDC_RULE_ACTION_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_ACTION_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, NULL)); + SetDlgItemText (hwnd, IDC_RULE_ACTION_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, NULL)); CheckRadioButton (hwnd, IDC_RULE_ACTION_BLOCK, IDC_RULE_ACTION_ALLOW, ptr_rule->is_block ? IDC_RULE_ACTION_BLOCK : IDC_RULE_ACTION_ALLOW); @@ -191,7 +190,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { SetDlgItemText (hwnd, IDC_RULE_PROTOCOL, app.LocaleString (IDS_PROTOCOL, L":")); - const UINT8 protos[] = { + UINT8 protos[] = { IPPROTO_ICMP, IPPROTO_IGMP, IPPROTO_IPV4, @@ -206,18 +205,18 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa INT index = 0; - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, index, (LPARAM)text_any.GetString ()); - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, index, 0); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, (WPARAM)index, (LPARAM)text_any.GetString ()); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, (WPARAM)index, 0); if (ptr_rule->protocol == 0) - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETCURSEL, index, 0); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETCURSEL, (WPARAM)index, 0); index += 1; for (auto &proto : protos) { - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, index, (LPARAM)_r_fmt (L"%s (%" PRIu8 L")", _app_getprotoname (proto, AF_UNSPEC).GetString (), proto).GetString ()); - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, index, (LPARAM)proto); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, (WPARAM)index, (LPARAM)_r_fmt (L"%s (%" TEXT (PRIu8) L")", _app_getprotoname (proto, AF_UNSPEC).GetString (), proto).GetString ()); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, (WPARAM)index, (LPARAM)proto); if (ptr_rule->protocol == proto) SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETCURSEL, (WPARAM)index, 0); @@ -228,8 +227,8 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa // unknown protocol if (SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_GETCURSEL, 0, 0) == CB_ERR) { - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, index, (LPARAM)_r_fmt (L"%s (%" PRIu8 L")", _app_getprotoname (ptr_rule->protocol, AF_UNSPEC).GetString (), ptr_rule->protocol).GetString ()); - SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, index, (LPARAM)ptr_rule->protocol); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_INSERTSTRING, (WPARAM)index, (LPARAM)_r_fmt (L"%s (%" TEXT (PRIu8) L")", _app_getprotoname (ptr_rule->protocol, AF_UNSPEC).GetString (), ptr_rule->protocol).GetString ()); + SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETITEMDATA, (WPARAM)index, (LPARAM)ptr_rule->protocol); SendDlgItemMessage (hwnd, IDC_RULE_PROTOCOL_ID, CB_SETCURSEL, (WPARAM)index, 0); } @@ -243,7 +242,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa SetDlgItemText (hwnd, IDC_RULE_REMOTE, app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_REMOTE L"):")); _r_listview_setstyle (hwnd, IDC_RULE_REMOTE_ID, LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP, FALSE); - _r_listview_addcolumn (hwnd, IDC_RULE_REMOTE_ID, 0, nullptr, -100, 0); + _r_listview_addcolumn (hwnd, IDC_RULE_REMOTE_ID, 0, NULL, -100, 0); if (!_r_str_isempty (ptr_rule->prule_remote)) { @@ -257,22 +256,22 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa _r_str_trim (rule_single, DIVIDER_TRIM DIVIDER_RULE); _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_additem (hwnd, IDC_RULE_REMOTE_ID, index, 0, rule_single, I_IMAGENONE, I_GROUPIDNONE, index); + _r_listview_additem (hwnd, IDC_RULE_REMOTE_ID, index, 0, rule_single); _r_fastlock_releaseshared (&lock_checkbox); index += 1; } - _r_listview_setcolumn (hwnd, IDC_RULE_REMOTE_ID, 0, nullptr, -100); + _r_listview_setcolumn (hwnd, IDC_RULE_REMOTE_ID, 0, NULL, -100); } SetDlgItemText (hwnd, IDC_RULE_REMOTE_ADD, app.LocaleString (IDS_ADD, L"...")); SetDlgItemText (hwnd, IDC_RULE_REMOTE_EDIT, app.LocaleString (IDS_EDIT2, L"...")); - SetDlgItemText (hwnd, IDC_RULE_REMOTE_DELETE, app.LocaleString (IDS_DELETE, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_REMOTE_DELETE, app.LocaleString (IDS_DELETE, NULL)); _r_ctrl_enable (hwnd, IDC_RULE_REMOTE_ADD, !ptr_rule->is_readonly); - _r_ctrl_enable (hwnd, IDC_RULE_REMOTE_EDIT, false); - _r_ctrl_enable (hwnd, IDC_RULE_REMOTE_DELETE, false); + _r_ctrl_enable (hwnd, IDC_RULE_REMOTE_EDIT, FALSE); + _r_ctrl_enable (hwnd, IDC_RULE_REMOTE_DELETE, FALSE); _r_wnd_addstyle (hwnd, IDC_RULE_REMOTE_ADD, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_RULE_REMOTE_EDIT, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); @@ -285,7 +284,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa SetDlgItemText (hwnd, IDC_RULE_LOCAL, app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_LOCAL L"):")); _r_listview_setstyle (hwnd, IDC_RULE_LOCAL_ID, LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP, FALSE); - _r_listview_addcolumn (hwnd, IDC_RULE_LOCAL_ID, 0, nullptr, -100, 0); + _r_listview_addcolumn (hwnd, IDC_RULE_LOCAL_ID, 0, NULL, -100, 0); if (!_r_str_isempty (ptr_rule->prule_local)) { @@ -299,22 +298,22 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa _r_str_trim (rule_single, DIVIDER_TRIM DIVIDER_RULE); _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_additem (hwnd, IDC_RULE_LOCAL_ID, index, 0, rule_single, I_IMAGENONE, I_GROUPIDNONE, index); + _r_listview_additem (hwnd, IDC_RULE_LOCAL_ID, index, 0, rule_single); _r_fastlock_releaseshared (&lock_checkbox); index += 1; } - _r_listview_setcolumn (hwnd, IDC_RULE_LOCAL_ID, 0, nullptr, -100); + _r_listview_setcolumn (hwnd, IDC_RULE_LOCAL_ID, 0, NULL, -100); } SetDlgItemText (hwnd, IDC_RULE_LOCAL_ADD, app.LocaleString (IDS_ADD, L"...")); SetDlgItemText (hwnd, IDC_RULE_LOCAL_EDIT, app.LocaleString (IDS_EDIT2, L"...")); - SetDlgItemText (hwnd, IDC_RULE_LOCAL_DELETE, app.LocaleString (IDS_DELETE, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_LOCAL_DELETE, app.LocaleString (IDS_DELETE, NULL)); _r_ctrl_enable (hwnd, IDC_RULE_LOCAL_ADD, !ptr_rule->is_readonly); - _r_ctrl_enable (hwnd, IDC_RULE_LOCAL_EDIT, false); - _r_ctrl_enable (hwnd, IDC_RULE_LOCAL_DELETE, false); + _r_ctrl_enable (hwnd, IDC_RULE_LOCAL_EDIT, FALSE); + _r_ctrl_enable (hwnd, IDC_RULE_LOCAL_DELETE, FALSE); _r_wnd_addstyle (hwnd, IDC_RULE_LOCAL_ADD, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_RULE_LOCAL_EDIT, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); @@ -328,7 +327,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa _r_listview_setstyle (hwnd, IDC_RULE_APPS_ID, LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP | LVS_EX_CHECKBOXES, TRUE); - _r_listview_addcolumn (hwnd, IDC_RULE_APPS_ID, 0, app.LocaleString (IDS_NAME, nullptr), 0, LVCFMT_LEFT); + _r_listview_addcolumn (hwnd, IDC_RULE_APPS_ID, 0, app.LocaleString (IDS_NAME, NULL), 0, LVCFMT_LEFT); _r_listview_addgroup (hwnd, IDC_RULE_APPS_ID, 0, L"", 0, LVGS_COLLAPSIBLE, LVGS_COLLAPSIBLE); _r_listview_addgroup (hwnd, IDC_RULE_APPS_ID, 1, L"", 0, LVGS_COLLAPSIBLE, LVGS_COLLAPSIBLE); @@ -337,7 +336,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa // apps (apply to) for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -358,7 +357,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa group_id = 0; // check for services - const bool is_enabled = (ptr_rule->apps.find (p.first) != ptr_rule->apps.end ()) || ptr_rule->is_forservices && (p.first == config.ntoskrnl_hash || p.first == config.svchost_hash); + BOOLEAN is_enabled = (ptr_rule->apps.find (p.first) != ptr_rule->apps.end ()) || (ptr_rule->is_forservices && (p.first == config.ntoskrnl_hash || p.first == config.svchost_hash)); _r_fastlock_acquireshared (&lock_checkbox); @@ -368,25 +367,25 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa _r_fastlock_releaseshared (&lock_checkbox); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } // resize column - _r_listview_setcolumn (hwnd, IDC_RULE_APPS_ID, 0, nullptr, -100); + _r_listview_setcolumn (hwnd, IDC_RULE_APPS_ID, 0, NULL, -100); // localize groups _app_refreshgroups (hwnd, IDC_RULE_APPS_ID); // sort column - _app_listviewsort (hwnd, IDC_RULE_APPS_ID); + _app_listviewsort (hwnd, IDC_RULE_APPS_ID, INVALID_INT, FALSE); } // hints if (GetDlgItem (hwnd, IDC_RULE_HINT)) - SetDlgItemText (hwnd, IDC_RULE_HINT, app.LocaleString (IDS_RULE_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_HINT, app.LocaleString (IDS_RULE_HINT, NULL)); if (GetDlgItem (hwnd, IDC_RULE_APPS_HINT)) - SetDlgItemText (hwnd, IDC_RULE_APPS_HINT, app.LocaleString (IDS_RULE_APPS_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_RULE_APPS_HINT, app.LocaleString (IDS_RULE_APPS_HINT, NULL)); break; } @@ -399,7 +398,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { case NM_CUSTOMDRAW: { - LONG result = _app_nmcustdraw_listview ((LPNMLVCUSTOMDRAW)lparam); + LONG_PTR result = _app_nmcustdraw_listview ((LPNMLVCUSTOMDRAW)lparam); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, result); return result; @@ -413,7 +412,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa break; INT command_id = 0; - const INT ctrl_id = static_cast(lpnmlv->hdr.idFrom); + INT ctrl_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if (ctrl_id == IDC_RULE_REMOTE_ID) { @@ -434,7 +433,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { LPNMITEMACTIVATE lpnmlv = (LPNMITEMACTIVATE)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if ( listview_id != IDC_RULE_REMOTE_ID && @@ -445,66 +444,66 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa break; } - const HMENU hsubmenu = CreatePopupMenu (); + HMENU hsubmenu = CreatePopupMenu (); if (!hsubmenu) break; - const bool is_selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0) != 0; + BOOLEAN is_selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0) != 0; if (listview_id == IDC_RULE_REMOTE_ID || listview_id == IDC_RULE_LOCAL_ID) { - const bool is_remote = listview_id == IDC_RULE_REMOTE_ID; + BOOLEAN is_remote = listview_id == IDC_RULE_REMOTE_ID; - const UINT id_add = is_remote ? IDC_RULE_REMOTE_ADD : IDC_RULE_LOCAL_ADD; - const UINT id_edit = is_remote ? IDC_RULE_REMOTE_EDIT : IDC_RULE_LOCAL_EDIT; - const UINT id_delete = is_remote ? IDC_RULE_REMOTE_DELETE : IDC_RULE_LOCAL_DELETE; + UINT id_add = is_remote ? IDC_RULE_REMOTE_ADD : IDC_RULE_LOCAL_ADD; + UINT id_edit = is_remote ? IDC_RULE_REMOTE_EDIT : IDC_RULE_LOCAL_EDIT; + UINT id_delete = is_remote ? IDC_RULE_REMOTE_DELETE : IDC_RULE_LOCAL_DELETE; AppendMenu (hsubmenu, MF_STRING, id_add, app.LocaleString (IDS_ADD, L"...")); AppendMenu (hsubmenu, MF_STRING, id_edit, app.LocaleString (IDS_EDIT2, L"...")); - AppendMenu (hsubmenu, MF_STRING, id_delete, app.LocaleString (IDS_DELETE, nullptr)); - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hsubmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, nullptr)); + AppendMenu (hsubmenu, MF_STRING, id_delete, app.LocaleString (IDS_DELETE, NULL)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hsubmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, NULL)); if (ptr_rule->is_readonly) { - _r_menu_enableitem (hsubmenu, id_add, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, id_edit, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, id_delete, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, id_add, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, id_edit, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, id_delete, MF_BYCOMMAND, FALSE); } if (!is_selected) { - _r_menu_enableitem (hsubmenu, id_edit, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, id_delete, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_COPY, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, id_edit, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, id_delete, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_COPY, MF_BYCOMMAND, FALSE); } } else if (listview_id == IDC_RULE_APPS_ID) { - AppendMenu (hsubmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, nullptr)); - AppendMenu (hsubmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, nullptr)); - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hsubmenu, MF_STRING, IDM_PROPERTIES, app.LocaleString (IDS_SHOWINLIST, nullptr)); - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hsubmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, nullptr)); + AppendMenu (hsubmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, NULL)); + AppendMenu (hsubmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, NULL)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hsubmenu, MF_STRING, IDM_PROPERTIES, app.LocaleString (IDS_SHOWINLIST, NULL)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hsubmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, NULL)); if (ptr_rule->type != DataRuleCustom) { - _r_menu_enableitem (hsubmenu, IDM_CHECK, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_UNCHECK, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, IDM_CHECK, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_UNCHECK, MF_BYCOMMAND, FALSE); } if (!is_selected) { - _r_menu_enableitem (hsubmenu, IDM_CHECK, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_UNCHECK, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_PROPERTIES, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_COPY, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, IDM_CHECK, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_UNCHECK, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_PROPERTIES, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_COPY, MF_BYCOMMAND, FALSE); } } - _r_menu_popup (hsubmenu, hwnd, nullptr, true); + _r_menu_popup (hsubmenu, hwnd, NULL, TRUE); DestroyMenu (hsubmenu); @@ -514,7 +513,10 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa case LVN_COLUMNCLICK: { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lparam; - _app_listviewsort (hwnd, static_cast(lpnmlv->hdr.idFrom), lpnmlv->iSubItem, true); + + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); + + _app_listviewsort (hwnd, listview_id, lpnmlv->iSubItem, TRUE); break; } @@ -523,7 +525,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if ((lpnmlv->uChanged & LVIF_STATE) != 0) { @@ -547,7 +549,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if ((lpnmlv->uChanged & LVIF_STATE) != 0) { @@ -559,7 +561,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa break; _app_refreshgroups (hwnd, listview_id); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); } } else if (listview_id == IDC_RULE_REMOTE_ID || listview_id == IDC_RULE_LOCAL_ID) @@ -568,7 +570,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { if (!ptr_rule->is_readonly) { - const bool is_selected = (lpnmlv->uNewState & LVIS_SELECTED) != 0; + BOOLEAN is_selected = (lpnmlv->uNewState & LVIS_SELECTED) != 0; if (listview_id == IDC_RULE_REMOTE_ID) { @@ -592,10 +594,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa { LPNMLVGETINFOTIP lpnmlv = (LPNMLVGETINFOTIP)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); - - _r_str_copy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettooltip (hwnd, listview_id, app_hash)); + _r_str_copy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettooltip (hwnd, lpnmlv)); break; } @@ -605,7 +604,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa NMLVEMPTYMARKUP* lpnmlv = (NMLVEMPTYMARKUP*)lparam; lpnmlv->dwFlags = EMF_CENTERED; - _r_str_copy (lpnmlv->szMarkup, _countof (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, nullptr)); + _r_str_copy (lpnmlv->szMarkup, RTL_NUMBER_OF (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, NULL)); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -617,7 +616,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); + INT ctrl_id = LOWORD (wparam); switch (ctrl_id) { @@ -629,7 +628,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa if (!_r_ctrl_isenabled (hwnd, ctrl_id)) break; - const INT listview_id = ((ctrl_id == IDC_RULE_REMOTE_ADD || ctrl_id == IDC_RULE_REMOTE_EDIT) ? IDC_RULE_REMOTE_ID : IDC_RULE_LOCAL_ID); + INT listview_id = ((ctrl_id == IDC_RULE_REMOTE_ADD || ctrl_id == IDC_RULE_REMOTE_EDIT) ? IDC_RULE_REMOTE_ID : IDC_RULE_LOCAL_ID); INT item_id; if ((ctrl_id == IDC_RULE_REMOTE_EDIT || ctrl_id == IDC_RULE_LOCAL_EDIT)) @@ -646,18 +645,15 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa item_id = INVALID_INT; } - PEDITOR_CONTEXT pcontext = (PEDITOR_CONTEXT)_r_mem_allocex (sizeof (EDITOR_CONTEXT), HEAP_ZERO_MEMORY); + PITEM_CONTEXT pcontext = (PITEM_CONTEXT)_r_mem_allocatezero (sizeof (ITEM_CONTEXT)); - if (pcontext) - { - pcontext->hwnd = hwnd; - pcontext->listview_id = listview_id; - pcontext->item_id = item_id; + pcontext->hwnd = hwnd; + pcontext->listview_id = listview_id; + pcontext->item_id = item_id; - DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR_ADDRULE), hwnd, &AddRuleProc, (LPARAM)pcontext); + DialogBoxParam (NULL, MAKEINTRESOURCE (IDD_EDITOR_ADDRULE), hwnd, &AddRuleProc, (LPARAM)pcontext); - _r_mem_free (pcontext); - } + _r_mem_free (pcontext); break; } @@ -665,18 +661,18 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa case IDC_RULE_REMOTE_DELETE: case IDC_RULE_LOCAL_DELETE: { - const INT listview_id = ((ctrl_id == IDC_RULE_REMOTE_DELETE) ? IDC_RULE_REMOTE_ID : IDC_RULE_LOCAL_ID); - const INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); + INT listview_id = ((ctrl_id == IDC_RULE_REMOTE_DELETE) ? IDC_RULE_REMOTE_ID : IDC_RULE_LOCAL_ID); + INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); - if (!selected || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, nullptr, nullptr, _r_fmt (app.LocaleString (IDS_QUESTION_DELETE, nullptr), selected)) != IDYES) + if (!selected || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, NULL, NULL, _r_fmt (app.LocaleString (IDS_QUESTION_DELETE, NULL), selected)) != IDYES) break; - const INT count = _r_listview_getitemcount (hwnd, listview_id) - 1; + INT count = _r_listview_getitemcount (hwnd, listview_id, FALSE) - 1; for (INT i = count; i != INVALID_INT; i--) { - if ((UINT)SendDlgItemMessage (hwnd, listview_id, LVM_GETITEMSTATE, i, LVNI_SELECTED) == LVNI_SELECTED) - SendDlgItemMessage (hwnd, listview_id, LVM_DELETEITEM, i, 0); + if ((UINT)SendDlgItemMessage (hwnd, listview_id, LVM_GETITEMSTATE, (WPARAM)i, LVNI_SELECTED) == LVNI_SELECTED) + SendDlgItemMessage (hwnd, listview_id, LVM_DELETEITEM, (WPARAM)i, 0); } break; @@ -685,7 +681,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa case IDM_CHECK: case IDM_UNCHECK: { - const bool new_val = ((ctrl_id == IDM_CHECK) ? true : false); + BOOLEAN new_val = (ctrl_id == IDM_CHECK); INT item = INVALID_INT; _r_fastlock_acquireshared (&lock_checkbox); @@ -696,7 +692,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa _r_fastlock_releaseshared (&lock_checkbox); _app_refreshgroups (hwnd, IDC_RULE_APPS_ID); - _app_listviewsort (hwnd, IDC_RULE_APPS_ID); + _app_listviewsort (hwnd, IDC_RULE_APPS_ID, INVALID_INT, FALSE); break; } @@ -707,11 +703,11 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa while ((item = (INT)SendDlgItemMessage (hwnd, IDC_RULE_APPS_ID, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, IDC_RULE_APPS_ID, item); - const INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, IDC_RULE_APPS_ID, item); + INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); if (app_listview_id) - _app_showitem (app.GetHWND (), app_listview_id, _app_getposition (app.GetHWND (), app_listview_id, app_hash)); + _app_showitem (app.GetHWND (), app_listview_id, _app_getposition (app.GetHWND (), app_listview_id, app_hash), INVALID_INT); } break; @@ -726,7 +722,7 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa INT listview_id = GetDlgCtrlID (hlistview); - if (!listview_id || !_r_listview_getitemcount (hwnd, listview_id)) + if (!listview_id || !_r_listview_getitemcount (hwnd, listview_id, FALSE)) break; INT item = INVALID_INT; @@ -755,8 +751,8 @@ INT_PTR CALLBACK EditorPagesProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpa INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { - static PR_OBJECT ptr_rule_object = nullptr; - static PITEM_RULE ptr_rule = nullptr; + static PR_OBJECT ptr_rule_object = NULL; + static PITEM_RULE ptr_rule = NULL; switch (msg) { @@ -782,9 +778,9 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) _r_wnd_center (hwnd, GetParent (hwnd)); //// configure tabs - _r_tab_additem (hwnd, IDC_TAB, 0, app.LocaleString (IDS_SETTINGS_GENERAL, nullptr), INVALID_INT, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_GENERAL), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); - _r_tab_additem (hwnd, IDC_TAB, 1, app.LocaleString (IDS_RULE, nullptr), INVALID_INT, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_RULE), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); - _r_tab_additem (hwnd, IDC_TAB, 2, app.LocaleString (IDS_TAB_APPS, nullptr), INVALID_INT, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_APPS), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); + _r_tab_additem (hwnd, IDC_TAB, 0, app.LocaleString (IDS_SETTINGS_GENERAL, NULL), I_IMAGENONE, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_GENERAL), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); + _r_tab_additem (hwnd, IDC_TAB, 1, app.LocaleString (IDS_RULE, NULL), I_IMAGENONE, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_RULE), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); + _r_tab_additem (hwnd, IDC_TAB, 2, app.LocaleString (IDS_TAB_APPS, NULL), I_IMAGENONE, (LPARAM)CreateDialogParam (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_EDITOR_APPS), hwnd, &EditorPagesProc, (LPARAM)ptr_rule)); #if !defined(_APP_NO_DARKTHEME) _r_wnd_setdarktheme (hwnd); @@ -792,7 +788,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) // localize window { - rstring title = app.LocaleString (IDS_EDITOR, nullptr); + rstring title = app.LocaleString (IDS_EDITOR, NULL); if (!_r_str_isempty (ptr_rule->pname)) title.AppendFormat (L" \"%s\"", !_r_str_isempty (ptr_rule->pname) ? ptr_rule->pname : SZ_RULE_NEW_TITLE); @@ -803,10 +799,10 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) SetWindowText (hwnd, title); } - SetDlgItemText (hwnd, IDC_ENABLE_CHK, app.LocaleString (IDS_ENABLE_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_ENABLE_CHK, app.LocaleString (IDS_ENABLE_CHK, NULL)); - SetDlgItemText (hwnd, IDC_SAVE, app.LocaleString (IDS_SAVE, nullptr)); - SetDlgItemText (hwnd, IDC_CLOSE, app.LocaleString (IDS_CLOSE, nullptr)); + SetDlgItemText (hwnd, IDC_SAVE, app.LocaleString (IDS_SAVE, NULL)); + SetDlgItemText (hwnd, IDC_CLOSE, app.LocaleString (IDS_CLOSE, NULL)); _r_wnd_addstyle (hwnd, IDC_SAVE, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_CLOSE, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); @@ -845,7 +841,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { case TCN_SELCHANGING: { - const HWND hpage = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + HWND hpage = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (hpage) ShowWindow (hpage, SW_HIDE); @@ -855,7 +851,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) case TCN_SELCHANGE: { - const HWND hpage = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + HWND hpage = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (hpage) { @@ -873,21 +869,21 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); + INT ctrl_id = LOWORD (wparam); switch (ctrl_id) { case IDOK: // process Enter key case IDC_SAVE: { - const HWND hpage_general = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 0); - const HWND hpage_rule = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 1); - const HWND hpage_apps = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 2); + HWND hpage_general = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 0); + HWND hpage_rule = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 1); + HWND hpage_apps = (HWND)_r_tab_getlparam (hwnd, IDC_TAB, 2); if (!SendDlgItemMessage (hpage_general, IDC_RULE_NAME_ID, WM_GETTEXTLENGTH, 0, 0)) return FALSE; - ptr_rule->is_haveerrors = false; // reset errors + ptr_rule->is_haveerrors = FALSE; // reset errors // do not change read-only rules if (!ptr_rule->is_readonly) @@ -904,7 +900,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { rstring buffer; - for (INT i = 0; i < _r_listview_getitemcount (hpage_rule, IDC_RULE_REMOTE_ID); i++) + for (INT i = 0; i < _r_listview_getitemcount (hpage_rule, IDC_RULE_REMOTE_ID, FALSE); i++) { rstring rule = _r_listview_getitemtext (hpage_rule, IDC_RULE_REMOTE_ID, i, 0); _r_str_trim (rule, DIVIDER_TRIM DIVIDER_RULE); @@ -927,7 +923,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { rstring buffer; - for (INT i = 0; i < _r_listview_getitemcount (hpage_rule, IDC_RULE_LOCAL_ID); i++) + for (INT i = 0; i < _r_listview_getitemcount (hpage_rule, IDC_RULE_LOCAL_ID, FALSE); i++) { rstring rule = _r_listview_getitemtext (hpage_rule, IDC_RULE_LOCAL_ID, i, 0); _r_str_trim (rule, DIVIDER_TRIM DIVIDER_RULE); @@ -948,7 +944,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) ptr_rule->protocol = (UINT8)SendDlgItemMessage (hpage_general, IDC_RULE_PROTOCOL_ID, CB_GETITEMDATA, SendDlgItemMessage (hpage_general, IDC_RULE_PROTOCOL_ID, CB_GETCURSEL, 0, 0), 0); - ptr_rule->direction = std::clamp ((FWP_DIRECTION)(_r_ctrl_isradiobuttonchecked (hpage_general, IDC_RULE_DIRECTION_OUTBOUND, IDC_RULE_DIRECTION_ANY) - IDC_RULE_DIRECTION_OUTBOUND), FWP_DIRECTION_OUTBOUND, FWP_DIRECTION_MAX); + ptr_rule->direction = _r_calc_clamp (FWP_DIRECTION, _r_ctrl_isradiobuttonchecked (hpage_general, IDC_RULE_DIRECTION_OUTBOUND, IDC_RULE_DIRECTION_ANY) - IDC_RULE_DIRECTION_OUTBOUND, (INT)FWP_DIRECTION_OUTBOUND, (INT)FWP_DIRECTION_MAX); ptr_rule->is_block = _r_ctrl_isradiobuttonchecked (hpage_general, IDC_RULE_ACTION_BLOCK, IDC_RULE_ACTION_ALLOW) == IDC_RULE_ACTION_BLOCK; if (ptr_rule->type == DataRuleCustom) @@ -960,9 +956,9 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { ptr_rule->apps.clear (); - for (INT i = 0; i < _r_listview_getitemcount (hpage_apps, IDC_RULE_APPS_ID); i++) + for (INT i = 0; i < _r_listview_getitemcount (hpage_apps, IDC_RULE_APPS_ID, FALSE); i++) { - const size_t app_hash = _r_listview_getitemlparam (hpage_apps, IDC_RULE_APPS_ID, i); + SIZE_T app_hash = _r_listview_getitemlparam (hpage_apps, IDC_RULE_APPS_ID, i); if (ptr_rule->is_forservices && (app_hash == config.ntoskrnl_hash || app_hash == config.svchost_hash)) continue; @@ -970,7 +966,7 @@ INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) if (_app_isappfound (app_hash)) { if (_r_listview_isitemchecked (hpage_apps, IDC_RULE_APPS_ID, i)) - ptr_rule->apps[app_hash] = true; + ptr_rule->apps[app_hash] = TRUE; } } } diff --git a/src/global.hpp b/src/global.hpp index c1bbd457..32ebf005 100644 --- a/src/global.hpp +++ b/src/global.hpp @@ -3,27 +3,26 @@ #pragma once +#include "routine.hpp" + #include #include #include #include #include -#include -#include -#include #include -#include -#include -#include #include -#include +#include +#include +#include +#include #include +#include #include -#include -#include +#include +#include #include "app.hpp" -#include "routine.hpp" #include "rapp.hpp" #include "main.hpp" @@ -46,14 +45,12 @@ inline rapp app; inline STATIC_DATA config; -inline FWPM_SESSION session; - inline OBJECTS_MAP apps; -inline OBJECTS_MAP apps_helper; +inline OBJECTS_APP_HELPER apps_helper; inline OBJECTS_VEC rules_arr; -inline OBJECTS_MAP rules_config; -inline OBJECTS_MAP network_map; -inline OBJECTS_VEC log_arr; +inline OBJECTS_RULE_CONFIG rules_config; +inline OBJECTS_NETWORK network_map; +inline OBJECTS_LOG log_arr; inline OBJECTS_MAP cache_arpa; inline OBJECTS_MAP cache_signatures; diff --git a/src/helper.cpp b/src/helper.cpp index 29169523..53df6f8e 100644 --- a/src/helper.cpp +++ b/src/helper.cpp @@ -3,77 +3,105 @@ #include "global.hpp" -void _app_dereferenceapp (PVOID pdata) +VOID NTAPI _app_dereferenceapp (PVOID pdata) { - delete PITEM_APP (pdata); + PITEM_APP ptr_item = (PITEM_APP)pdata; + + SAFE_DELETE_MEMORY (ptr_item->display_name); + SAFE_DELETE_MEMORY (ptr_item->real_path); + SAFE_DELETE_MEMORY (ptr_item->original_path); + + if (ptr_item->pnotification) + _r_obj_dereference (ptr_item->pnotification); + + delete ptr_item; } -void _app_dereferenceappshelper (PVOID pdata) +VOID NTAPI _app_dereferenceappshelper (PVOID pdata) { - delete PITEM_APP_HELPER (pdata); + PITEM_APP_HELPER ptr_item = (PITEM_APP_HELPER)pdata; + + SAFE_DELETE_MEMORY (ptr_item->display_name); + SAFE_DELETE_MEMORY (ptr_item->real_path); + SAFE_DELETE_MEMORY (ptr_item->internal_name); + + SAFE_DELETE_MEMORY (ptr_item->pdata); } -void _app_dereferencelog (PVOID pdata) +VOID NTAPI _app_dereferencelog (PVOID pdata) { - delete PITEM_LOG (pdata); + PITEM_LOG ptr_item = (PITEM_LOG)pdata; + + SAFE_DELETE_MEMORY (ptr_item->path); + SAFE_DELETE_MEMORY (ptr_item->provider_name); + SAFE_DELETE_MEMORY (ptr_item->filter_name); + SAFE_DELETE_MEMORY (ptr_item->username); + + SAFE_DELETE_ICON (ptr_item->hicon); } -void _app_dereferencenetwork (PVOID pdata) +VOID NTAPI _app_dereferencenetwork (PVOID pdata) { - delete PITEM_NETWORK (pdata); + PITEM_NETWORK ptr_item = (PITEM_NETWORK)pdata; + + SAFE_DELETE_MEMORY (ptr_item->path); } -void _app_dereferencerule (PVOID pdata) +VOID NTAPI _app_dereferencerule (PVOID pdata) { - delete PITEM_RULE (pdata); + PITEM_RULE ptr_item = (PITEM_RULE)pdata; + + SAFE_DELETE_MEMORY (ptr_item->pname); + SAFE_DELETE_MEMORY (ptr_item->prule_remote); + SAFE_DELETE_MEMORY (ptr_item->prule_local); + + delete ptr_item; } -void _app_dereferenceruleconfig (PVOID pdata) +VOID NTAPI _app_dereferenceruleconfig (PVOID pdata) { - delete PITEM_RULE_CONFIG (pdata); + PITEM_RULE_CONFIG ptr_item = (PITEM_RULE_CONFIG)pdata; + + SAFE_DELETE_MEMORY (ptr_item->pname); + SAFE_DELETE_MEMORY (ptr_item->papps); } -void _app_dereferencestring (PVOID pdata) -{ - delete[] LPWSTR (pdata); -} - -bool _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT16 port, LPWSTR* ptr_dest, DWORD flags) +BOOLEAN _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT16 port, LPWSTR* ptr_dest, DWORD flags) { if (af != AF_INET && af != AF_INET6) - return false; + return FALSE; - bool result = false; + BOOLEAN result = FALSE; WCHAR formatted_address[DNS_MAX_NAME_BUFFER_LENGTH] = {0}; - PIN_ADDR p4addr = PIN_ADDR (paddr); - PIN6_ADDR p6addr = PIN6_ADDR (paddr); + PIN_ADDR p4addr = (PIN_ADDR)paddr; + PIN6_ADDR p6addr = (PIN6_ADDR)paddr; if ((flags & FMTADDR_AS_ARPA) != 0) { if (af == AF_INET) { - _r_str_cat (formatted_address, _countof (formatted_address), _r_fmt (L"%hhu.%hhu.%hhu.%hhu.%s", p4addr->s_impno, p4addr->s_lh, p4addr->s_host, p4addr->s_net, DNS_IP4_REVERSE_DOMAIN_STRING_W)); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), _r_fmt (L"%hhu.%hhu.%hhu.%hhu.%s", p4addr->s_impno, p4addr->s_lh, p4addr->s_host, p4addr->s_net, DNS_IP4_REVERSE_DOMAIN_STRING_W)); } else { for (INT i = sizeof (IN6_ADDR) - 1; i >= 0; i--) - _r_str_cat (formatted_address, _countof (formatted_address), _r_fmt (L"%hhx.%hhx.", p6addr->s6_addr[i] & 0xF, (p6addr->s6_addr[i] >> 4) & 0xF)); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), _r_fmt (L"%hhx.%hhx.", p6addr->s6_addr[i] & 0xF, (p6addr->s6_addr[i] >> 4) & 0xF)); - _r_str_cat (formatted_address, _countof (formatted_address), DNS_IP6_REVERSE_DOMAIN_STRING_W); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), DNS_IP6_REVERSE_DOMAIN_STRING_W); } - result = true; + result = TRUE; } else { if ((flags & FMTADDR_USE_PROTOCOL) != 0) - _r_str_printf (formatted_address, _countof (formatted_address), L"%s://", _app_getprotoname (proto, AF_UNSPEC).GetString ()); + _r_str_printf (formatted_address, RTL_NUMBER_OF (formatted_address), L"%s://", _app_getprotoname (proto, AF_UNSPEC).GetString ()); WCHAR addr_str[DNS_MAX_NAME_BUFFER_LENGTH] = {0}; - if (InetNtop (af, paddr, addr_str, _countof (addr_str))) + if (_app_formatip (af, paddr, addr_str, RTL_NUMBER_OF (addr_str))) { if ((flags & FMTADDR_AS_RULE) != 0) { @@ -84,55 +112,53 @@ bool _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT result = !IN6_IS_ADDR_UNSPECIFIED (p6addr); if (result) - _r_str_cat (formatted_address, _countof (formatted_address), (af == AF_INET6) ? _r_fmt (L"[%s]", addr_str) : addr_str); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), (af == AF_INET6) ? _r_fmt (L"[%s]", addr_str) : addr_str); } else { - result = true; - _r_str_cat (formatted_address, _countof (formatted_address), addr_str); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), addr_str); + result = TRUE; } } if (port && (flags & FMTADDR_USE_PROTOCOL) == 0) - _r_str_cat (formatted_address, _countof (formatted_address), _r_fmt (!_r_str_isempty (formatted_address) ? L":%" PRIu16 : L"%" PRIu16, port)); + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), _r_fmt (!_r_str_isempty (formatted_address) ? L":%" TEXT (PRIu16) : L"%" TEXT (PRIu16), port)); } if ((flags & FMTADDR_RESOLVE_HOST) != 0) { - if (result && app.ConfigGet (L"IsNetworkResolutionsEnabled", false).AsBool ()) + if (result && app.ConfigGetBoolean (L"IsNetworkResolutionsEnabled", FALSE)) { - const size_t addr_hash = _r_str_hash (formatted_address); + SIZE_T addr_hash = _r_str_hash (formatted_address); + BOOLEAN is_exists = cache_hosts.find (addr_hash) != cache_hosts.end (); - if (addr_hash) + if (is_exists) { - const bool is_exists = cache_hosts.find (addr_hash) != cache_hosts.end (); + PR_OBJECT phash = cache_hosts[addr_hash]; - if (is_exists) + if (phash) { - PR_OBJECT ptr_cache_object = _r_obj_reference (cache_hosts[addr_hash]); + PR_OBJECT ptr_cache_object = _r_obj2_reference (phash); - if (ptr_cache_object) - { - if (ptr_cache_object->pdata) - _r_str_cat (formatted_address, _countof (formatted_address), _r_fmt (L" (%s)", (LPCWSTR)ptr_cache_object->pdata)); + if (ptr_cache_object->pdata) + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), _r_fmt (L" (%s)", (LPCWSTR)ptr_cache_object->pdata)); - _r_obj_dereference (ptr_cache_object); - } + _r_obj2_dereference (ptr_cache_object); } - else + } + else + { + cache_hosts[addr_hash] = NULL; + + LPWSTR ptr_cache = NULL; + + if (_app_resolveaddress (af, paddr, &ptr_cache)) { - cache_hosts[addr_hash] = nullptr; + _r_str_cat (formatted_address, RTL_NUMBER_OF (formatted_address), _r_fmt (L" (%s)", ptr_cache)); - LPWSTR ptr_cache = nullptr; + _app_freeobjects_map (cache_hosts, MAP_CACHE_MAX); - if (_app_resolveaddress (af, paddr, &ptr_cache)) - { - _r_str_cat (formatted_address, _countof (formatted_address), _r_fmt (L" (%s)", ptr_cache)); - - _app_freeobjects_map (cache_hosts, MAP_CACHE_MAX); - - cache_hosts[addr_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); - } + cache_hosts[addr_hash] = _r_obj2_allocate (ptr_cache); } } } @@ -140,41 +166,55 @@ bool _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT _r_str_alloc (ptr_dest, _r_str_length (formatted_address), formatted_address); - return !_r_str_isempty (formatted_address); + return result; } -rstring _app_formatport (UINT16 port, bool is_noempty) +BOOLEAN _app_formatip (ADDRESS_FAMILY af, PVOID paddr, LPWSTR out_buffer, ULONG buffer_size) +{ + if (af == AF_INET) + { + if (NT_SUCCESS (RtlIpv4AddressToStringEx ((PIN_ADDR)paddr, 0, out_buffer, &buffer_size))) + return TRUE; + } + else if (af == AF_INET6) + { + if (NT_SUCCESS (RtlIpv6AddressToStringEx ((PIN6_ADDR)paddr, 0, 0, out_buffer, &buffer_size))) + return TRUE; + } + + return FALSE; +} + +rstring _app_formatport (UINT16 port, BOOLEAN is_noempty) { rstring result; if (is_noempty) { - result.Format (L"%" PRIu16, port); + result.Format (L"%" TEXT (PRIu16), port); - rstring service_name = _app_getservicename (port, nullptr); + rstring service_name = _app_getservicename (port, NULL); if (!service_name.IsEmpty ()) result.AppendFormat (L" (%s)", service_name.GetString ()); } else { - result.Format (L"%" PRIu16 " (%s)", port, _app_getservicename (port, SZ_UNKNOWN).GetString ()); + result.Format (L"%" TEXT (PRIu16) L" (%s)", port, _app_getservicename (port, SZ_UNKNOWN).GetString ()); } return result; } -void _app_freeobjects_map (OBJECTS_MAP& ptr_map, size_t max_size) +VOID _app_freeobjects_map (OBJECTS_MAP& ptr_map, SIZE_T max_size) { if (max_size && ptr_map.size () <= max_size) return; - for (auto it = ptr_map.begin (); it != ptr_map.end ();) + for (auto &it = ptr_map.begin (); it != ptr_map.end ();) { - PR_OBJECT ptr_object = _r_obj_reference (it->second); - - if (ptr_object) - _r_obj_dereferenceex (ptr_object, 2); + if (it->second) + _r_obj2_dereference (it->second); it = ptr_map.erase (it); @@ -183,22 +223,68 @@ void _app_freeobjects_map (OBJECTS_MAP& ptr_map, size_t max_size) } } -void _app_freeobjects_vec (OBJECTS_VEC& ptr_vec) +VOID _app_freeappshelper_map (OBJECTS_APP_HELPER& ptr_map) { - for (auto it = ptr_vec.begin (); it != ptr_vec.end ();) + if (ptr_map.empty ()) + return; + + for (auto &it = ptr_map.begin (); it != ptr_map.end ();) { - PR_OBJECT ptr_object = _r_obj_reference (*it); + if (it->second) + _r_obj_dereference (it->second); + + it = ptr_map.erase (it); + } +} + +VOID _app_freerulesconfig_map (OBJECTS_RULE_CONFIG& ptr_map) +{ + if (ptr_map.empty ()) + return; + + for (auto &it = ptr_map.begin (); it != ptr_map.end ();) + { + if (it->second) + _r_obj_dereference (it->second); + + it = ptr_map.erase (it); + } +} + +VOID _app_freeobjects_vec (OBJECTS_VEC& ptr_vec) +{ + for (auto &it = ptr_vec.begin (); it != ptr_vec.end ();) + { + PR_OBJECT ptr_object = *it; if (ptr_object) - _r_obj_dereferenceex (ptr_object, 2); + _r_obj2_dereference (ptr_object); it = ptr_vec.erase (it); } } -void _app_freethreadpool (THREADS_VEC& ptr_vec) +VOID _app_freelogobjects_vec (OBJECTS_LOG& ptr_vec) { - for (auto it = ptr_vec.begin (); it != ptr_vec.end ();) + for (auto &it = ptr_vec.begin (); it != ptr_vec.end ();) + { + PVOID ptr_object = *it; + + if (ptr_object) + { + PITEM_LOG ptr_log = (PITEM_LOG)_r_obj_reference (ptr_object); + + if (ptr_log) + _r_obj_dereferenceex (ptr_log, 2); + } + + it = ptr_vec.erase (it); + } +} + +VOID _app_freethreadpool (THREADS_VEC& ptr_vec) +{ + for (auto &it = ptr_vec.begin (); it != ptr_vec.end ();) { HANDLE hthread = *it; @@ -206,7 +292,7 @@ void _app_freethreadpool (THREADS_VEC& ptr_vec) { if (WaitForSingleObjectEx (hthread, 0, FALSE) != WAIT_OBJECT_0) { - it++; + ++it; continue; } @@ -217,28 +303,32 @@ void _app_freethreadpool (THREADS_VEC& ptr_vec) } } -void _app_freelogstack () +VOID _app_freelogstack () { - while (true) + while (TRUE) { - const PSLIST_ENTRY listEntry = InterlockedPopEntrySList (&log_stack.ListHead); + PSLIST_ENTRY listEntry = RtlInterlockedPopEntrySList (&log_stack.ListHead); if (!listEntry) break; InterlockedDecrement (&log_stack.item_count); - PITEM_LIST_ENTRY ptr_entry = CONTAINING_RECORD (listEntry, ITEM_LIST_ENTRY, ListEntry); + PITEM_LOG_LISTENTRY ptr_entry = CONTAINING_RECORD (listEntry, ITEM_LOG_LISTENTRY, ListEntry); - _r_obj_dereference (ptr_entry->Body); + if (ptr_entry) + { + if (ptr_entry->Body) + _r_obj_dereference (ptr_entry->Body); - _aligned_free (ptr_entry); + _aligned_free (ptr_entry); + } } } -void _app_getappicon (const PITEM_APP ptr_app, bool is_small, PINT picon_id, HICON* picon) +VOID _app_getappicon (const PITEM_APP ptr_app, BOOLEAN is_small, PINT picon_id, HICON* picon) { - const bool is_iconshidden = app.ConfigGet (L"IsIconsHidden", false).AsBool (); + BOOLEAN is_iconshidden = app.ConfigGetBoolean (L"IsIconsHidden", FALSE); if (ptr_app->type == DataAppRegular || ptr_app->type == DataAppService) { @@ -275,7 +365,7 @@ void _app_getappicon (const PITEM_APP ptr_app, bool is_small, PINT picon_id, HIC } } -void _app_getdisplayname (size_t app_hash, PITEM_APP ptr_app, LPWSTR* extracted_name) +VOID _app_getdisplayname (SIZE_T app_hash, PITEM_APP ptr_app, LPWSTR* extracted_name) { if (!extracted_name) return; @@ -288,7 +378,7 @@ void _app_getdisplayname (size_t app_hash, PITEM_APP ptr_app, LPWSTR* extracted_ { rstring name; - if (!_app_item_get (ptr_app->type, app_hash, &name, nullptr, nullptr, nullptr)) + if (!_app_item_get (ptr_app->type, app_hash, &name, NULL, NULL, NULL)) name = ptr_app->original_path; _r_str_alloc (extracted_name, name.GetLength (), name); @@ -297,7 +387,7 @@ void _app_getdisplayname (size_t app_hash, PITEM_APP ptr_app, LPWSTR* extracted_ { LPCWSTR ptr_path = ((app_hash == config.ntoskrnl_hash) ? ptr_app->original_path : ptr_app->real_path); - if (app.ConfigGet (L"ShowFilenames", true).AsBool ()) + if (app.ConfigGetBoolean (L"ShowFilenames", TRUE)) { _r_str_alloc (extracted_name, INVALID_SIZE_T, _r_path_getfilename (ptr_path)); } @@ -308,12 +398,12 @@ void _app_getdisplayname (size_t app_hash, PITEM_APP ptr_app, LPWSTR* extracted_ } } -bool _app_getfileicon (LPCWSTR path, bool is_small, PINT picon_id, HICON* picon) +BOOLEAN _app_getfileicon (LPCWSTR path, BOOLEAN is_small, PINT picon_id, HICON* picon) { if (_r_str_isempty (path) || (!picon_id && !picon)) - return false; + return FALSE; - bool result = false; + BOOLEAN result = FALSE; SHFILEINFO shfi = {0}; @@ -336,7 +426,7 @@ bool _app_getfileicon (LPCWSTR path, bool is_small, PINT picon_id, HICON* picon) if (picon && shfi.hIcon) *picon = shfi.hIcon; - result = true; + result = TRUE; } if (!result) @@ -347,30 +437,30 @@ bool _app_getfileicon (LPCWSTR path, bool is_small, PINT picon_id, HICON* picon) if (picon) *picon = CopyIcon (is_small ? config.hicon_small : config.hicon_large); - result = true; + result = TRUE; } return result; } -PR_OBJECT _app_getsignatureinfo (size_t app_hash, const PITEM_APP ptr_app) +PR_OBJECT _app_getsignatureinfo (SIZE_T app_hash, const PITEM_APP ptr_app) { - if (!app_hash || !ptr_app || _r_str_isempty (ptr_app->real_path) || (ptr_app->type != DataAppRegular && ptr_app->type != DataAppService && ptr_app->type != DataAppUWP)) - return nullptr; + if (_r_str_isempty (ptr_app->real_path) || (ptr_app->type != DataAppRegular && ptr_app->type != DataAppService && ptr_app->type != DataAppUWP)) + return NULL; - const bool is_exists = cache_signatures.find (app_hash) != cache_signatures.end (); + BOOLEAN is_exists = cache_signatures.find (app_hash) != cache_signatures.end (); - PR_OBJECT ptr_cache_object = nullptr; + PR_OBJECT ptr_cache_object = NULL; if (is_exists) { - ptr_cache_object = _r_obj_reference (cache_signatures[app_hash]); + ptr_cache_object = _r_obj2_reference (cache_signatures[app_hash]); } else { - cache_signatures[app_hash] = nullptr; + cache_signatures[app_hash] = NULL; - const HANDLE hfile = CreateFile (ptr_app->real_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OPEN_REPARSE_POINT, nullptr); + HANDLE hfile = CreateFile (ptr_app->real_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OPEN_REPARSE_POINT, NULL); if (_r_fs_isvalidhandle (hfile)) { @@ -392,7 +482,7 @@ PR_OBJECT _app_getsignatureinfo (size_t app_hash, const PITEM_APP ptr_app) trustData.pFile = &fileInfo; trustData.dwStateAction = WTD_STATEACTION_VERIFY; - const LONG status = WinVerifyTrust ((HWND)INVALID_HANDLE_VALUE, &WinTrustActionGenericVerifyV2, &trustData); + LONG status = WinVerifyTrust ((HWND)INVALID_HANDLE_VALUE, &WinTrustActionGenericVerifyV2, &trustData); if (status == S_OK) { @@ -408,23 +498,23 @@ PR_OBJECT _app_getsignatureinfo (size_t app_hash, const PITEM_APP ptr_app) if (psProvCert) { - const DWORD num_chars = CertGetNameString (psProvCert->pCert, CERT_NAME_ATTR_TYPE, 0, szOID_COMMON_NAME, nullptr, 0); + DWORD num_chars = CertGetNameString (psProvCert->pCert, CERT_NAME_ATTR_TYPE, 0, szOID_COMMON_NAME, NULL, 0); if (num_chars > 1) { - LPWSTR ptr_cache = new WCHAR[num_chars]; + LPWSTR ptr_cache = (LPWSTR)_r_mem_allocatezero (num_chars * sizeof (WCHAR)); if (CertGetNameString (psProvCert->pCert, CERT_NAME_ATTR_TYPE, 0, szOID_COMMON_NAME, ptr_cache, num_chars) > 1) { _app_freeobjects_map (cache_signatures, MAP_CACHE_MAX); - cache_signatures[app_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); + cache_signatures[app_hash] = _r_obj2_allocate (ptr_cache); - ptr_cache_object = _r_obj_reference (cache_signatures[app_hash]); + ptr_cache_object = _r_obj2_reference (cache_signatures[app_hash]); } else { - SAFE_DELETE_ARRAY (ptr_cache); + _r_mem_free (ptr_cache); } } } @@ -439,48 +529,50 @@ PR_OBJECT _app_getsignatureinfo (size_t app_hash, const PITEM_APP ptr_app) } } - ptr_app->is_signed = (ptr_cache_object != nullptr && ptr_cache_object->pdata != nullptr); + ptr_app->is_signed = (ptr_cache_object != NULL && ptr_cache_object->pdata != NULL); return ptr_cache_object; } -PR_OBJECT _app_getversioninfo (size_t app_hash, const PITEM_APP ptr_app) +PR_OBJECT _app_getversioninfo (SIZE_T app_hash, const PITEM_APP ptr_app) { - if (!app_hash || !ptr_app || _r_str_isempty (ptr_app->real_path)) - return nullptr; + if (_r_str_isempty (ptr_app->real_path)) + return NULL; - PR_OBJECT ptr_cache_object = nullptr; - - const bool is_exists = cache_versions.find (app_hash) != cache_versions.end (); + PR_OBJECT ptr_cache_object = NULL; + BOOLEAN is_exists = cache_versions.find (app_hash) != cache_versions.end (); if (is_exists) { - ptr_cache_object = _r_obj_reference (cache_versions[app_hash]); + PR_OBJECT phash = cache_versions[app_hash]; + + if (phash) + ptr_cache_object = _r_obj2_reference (phash); } else { - cache_versions[app_hash] = nullptr; + cache_versions[app_hash] = NULL; - const HINSTANCE hlib = LoadLibraryEx (ptr_app->real_path, nullptr, LOAD_LIBRARY_AS_IMAGE_RESOURCE | LOAD_LIBRARY_AS_DATAFILE); + HINSTANCE hlib = LoadLibraryEx (ptr_app->real_path, NULL, LOAD_LIBRARY_AS_IMAGE_RESOURCE | LOAD_LIBRARY_AS_DATAFILE); if (hlib) { - const HRSRC hres = FindResource (hlib, MAKEINTRESOURCE (VS_VERSION_INFO), RT_VERSION); + HRSRC hres = FindResource (hlib, MAKEINTRESOURCE (VS_VERSION_INFO), RT_VERSION); if (hres) { - const HGLOBAL hglob = LoadResource (hlib, hres); + HGLOBAL hglob = LoadResource (hlib, hres); if (hglob) { - const LPVOID versionInfo = LockResource (hglob); + LPVOID versionInfo = LockResource (hglob); if (versionInfo) { rstring buffer; UINT vLen = 0, langD = 0; - LPVOID retbuf = nullptr; + LPVOID retbuf = NULL; WCHAR author_entry[128] = {0}; WCHAR description_entry[128] = {0}; @@ -489,24 +581,24 @@ PR_OBJECT _app_getversioninfo (size_t app_hash, const PITEM_APP ptr_app) { RtlCopyMemory (&langD, retbuf, vLen); - _r_str_printf (author_entry, _countof (author_entry), L"\\StringFileInfo\\%02X%02X%02X%02X\\CompanyName", (langD & 0xff00) >> 8, langD & 0xff, (langD & 0xff000000) >> 24, (langD & 0xff0000) >> 16); - _r_str_printf (description_entry, _countof (description_entry), L"\\StringFileInfo\\%02X%02X%02X%02X\\FileDescription", (langD & 0xff00) >> 8, langD & 0xff, (langD & 0xff000000) >> 24, (langD & 0xff0000) >> 16); + _r_str_printf (author_entry, RTL_NUMBER_OF (author_entry), L"\\StringFileInfo\\%02X%02X%02X%02X\\CompanyName", (langD & 0xff00) >> 8, langD & 0xff, (langD & 0xff000000) >> 24, (langD & 0xff0000) >> 16); + _r_str_printf (description_entry, RTL_NUMBER_OF (description_entry), L"\\StringFileInfo\\%02X%02X%02X%02X\\FileDescription", (langD & 0xff00) >> 8, langD & 0xff, (langD & 0xff000000) >> 24, (langD & 0xff0000) >> 16); } else { - _r_str_printf (author_entry, _countof (author_entry), L"\\StringFileInfo\\%04X04B0\\CompanyName", GetUserDefaultLangID ()); - _r_str_printf (description_entry, _countof (description_entry), L"\\StringFileInfo\\%04X04B0\\FileDescription", GetUserDefaultLangID ()); + _r_str_printf (author_entry, RTL_NUMBER_OF (author_entry), L"\\StringFileInfo\\%04X04B0\\CompanyName", GetUserDefaultLangID ()); + _r_str_printf (description_entry, RTL_NUMBER_OF (description_entry), L"\\StringFileInfo\\%04X04B0\\FileDescription", GetUserDefaultLangID ()); } if (VerQueryValue (versionInfo, description_entry, &retbuf, &vLen)) { buffer.Append (SZ_TAB); - buffer.Append (static_cast(retbuf)); + buffer.Append ((LPCWSTR)retbuf); UINT length = 0; - VS_FIXEDFILEINFO* verInfo = nullptr; + VS_FIXEDFILEINFO* verInfo = NULL; - if (VerQueryValue (versionInfo, L"\\", (void**)(&verInfo), &length)) + if (VerQueryValue (versionInfo, L"\\", (LPVOID*)&verInfo, &length)) { buffer.Append (_r_fmt (L" %d.%d", HIWORD (verInfo->dwFileVersionMS), LOWORD (verInfo->dwFileVersionMS))); @@ -525,22 +617,22 @@ PR_OBJECT _app_getversioninfo (size_t app_hash, const PITEM_APP ptr_app) if (VerQueryValue (versionInfo, author_entry, &retbuf, &vLen)) { buffer.Append (SZ_TAB); - buffer.Append (static_cast(retbuf)); + buffer.Append ((LPCWSTR)retbuf); buffer.Append (L"\r\n"); } _r_str_trim (buffer, DIVIDER_TRIM); // get signature information - LPWSTR ptr_cache = nullptr; + LPWSTR ptr_cache = NULL; if (_r_str_alloc (&ptr_cache, buffer.GetLength (), buffer)) { _app_freeobjects_map (cache_versions, MAP_CACHE_MAX); - cache_versions[app_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); + cache_versions[app_hash] = _r_obj2_allocate (ptr_cache); - ptr_cache_object = _r_obj_reference (cache_versions[app_hash]); + ptr_cache_object = _r_obj2_reference (cache_versions[app_hash]); } } @@ -1305,7 +1397,7 @@ rstring _app_getprotoname (UINT8 proto, ADDRESS_FAMILY af) return SZ_UNKNOWN; } -rstring _app_getstatename (DWORD state) +rstring _app_getstatename (DWORD state, LPCWSTR default_value) { switch (state) { @@ -1346,10 +1438,40 @@ rstring _app_getstatename (DWORD state) return L"Delete TCB"; } - return nullptr; + return default_value; } -COLORREF _app_getcolorvalue (size_t color_hash) +rstring _app_getdirectionname (FWP_DIRECTION direction, BOOLEAN is_loopback) +{ + rstring result; + + if (direction == FWP_DIRECTION_INBOUND) + result = SZ_DIRECTION_IN; + + else if (direction == FWP_DIRECTION_OUTBOUND) + result = SZ_DIRECTION_OUT; + + else if (direction == FWP_DIRECTION_MAX) + result = SZ_DIRECTION_ANY; + + if (is_loopback) + result.Append (SZ_DIRECTION_LOOPBACK); + + return result; +} + +rstring _app_getfiltername (LPCWSTR provider_name, LPCWSTR filter_name, LPCWSTR default_value) +{ + if (!_r_str_isempty (provider_name) && !_r_str_isempty (filter_name)) + return _r_fmt (L"%s\\%s", provider_name, filter_name); + + else if (!_r_str_isempty (filter_name)) + return filter_name; + + return default_value; +} + +COLORREF _app_getcolorvalue (SIZE_T color_hash) { if (!color_hash) return 0; @@ -1366,7 +1488,7 @@ COLORREF _app_getcolorvalue (size_t color_hash) rstring _app_getservicenamefromtag (HANDLE pid, const PVOID ptag) { rstring result; - const HMODULE hlib = GetModuleHandle (L"advapi32.dll"); + HMODULE hlib = GetModuleHandle (L"advapi32.dll"); if (hlib) { @@ -1375,30 +1497,27 @@ rstring _app_getservicenamefromtag (HANDLE pid, const PVOID ptag) if (_I_QueryTagInformation) { - PSC_SERVICE_TAG_QUERY pnameFromTag = (PSC_SERVICE_TAG_QUERY)_r_mem_allocex (sizeof (SC_SERVICE_TAG_QUERY), HEAP_ZERO_MEMORY); + PSC_SERVICE_TAG_QUERY pnameTag = (PSC_SERVICE_TAG_QUERY)_r_mem_allocatezero (sizeof (SC_SERVICE_TAG_QUERY)); - if (pnameFromTag) + pnameTag->ProcessId = HandleToUlong (pid); + pnameTag->ServiceTag = PtrToUlong (ptag); + + _I_QueryTagInformation (NULL, ServiceNameFromTagInformation, pnameTag); + + if (pnameTag->Buffer) { - pnameFromTag->ProcessId = HandleToUlong (pid); - pnameFromTag->ServiceTag = PtrToUlong (ptag); - - _I_QueryTagInformation (nullptr, ServiceNameFromTagInformation, pnameFromTag); - - if (pnameFromTag->Buffer) - { - result = static_cast(pnameFromTag->Buffer); - LocalFree (pnameFromTag->Buffer); - } - - _r_mem_free (pnameFromTag); + result = (LPCWSTR)(pnameTag->Buffer); + LocalFree (pnameTag->Buffer); } + + _r_mem_free (pnameTag); } } return result; } -rstring _app_getnetworkpath (DWORD pid, PULONG64 pmodules, PINT picon_id, size_t* phash) +rstring _app_getnetworkpath (DWORD pid, PULONG64 pmodules, PINT picon_id, PSIZE_T phash) { if (pid == PROC_WAITING_PID) { @@ -1421,21 +1540,21 @@ rstring _app_getnetworkpath (DWORD pid, PULONG64 pmodules, PINT picon_id, size_t } else { - const HANDLE hprocess = OpenProcess (PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid); + HANDLE hprocess = OpenProcess (PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid); if (hprocess) { DWORD size = 1024; - BOOL rc = QueryFullProcessImageName (hprocess, 0, proc_name.GetBuffer (size), &size); + BOOL is_success = QueryFullProcessImageName (hprocess, 0, proc_name.GetBuffer (size), &size); // fix for WSL processes (issue #606) - if (!rc && GetLastError () == ERROR_GEN_FAILURE) + if (!is_success && GetLastError () == ERROR_GEN_FAILURE) { size = 1024; - rc = QueryFullProcessImageName (hprocess, PROCESS_NAME_NATIVE, proc_name.GetBuffer (size), &size); + is_success = QueryFullProcessImageName (hprocess, PROCESS_NAME_NATIVE, proc_name.GetBuffer (size), &size); } - if (!rc) + if (!is_success) { proc_name.Release (); } @@ -1456,7 +1575,7 @@ rstring _app_getnetworkpath (DWORD pid, PULONG64 pmodules, PINT picon_id, size_t *picon_id = (INT)_app_getappinfo (*phash, InfoIconId); if (!*picon_id) - _app_getfileicon (proc_name, true, picon_id, nullptr); + _app_getfileicon (proc_name, TRUE, picon_id, NULL); } else { @@ -1466,40 +1585,25 @@ rstring _app_getnetworkpath (DWORD pid, PULONG64 pmodules, PINT picon_id, size_t return proc_name; } -size_t _app_getnetworkhash (ADDRESS_FAMILY af, DWORD pid, PVOID remote_addr, DWORD remote_port, PVOID local_addr, DWORD local_port, UINT8 proto, DWORD state) +SIZE_T _app_getnetworkhash (ADDRESS_FAMILY af, DWORD pid, PVOID remote_addr, DWORD remote_port, PVOID local_addr, DWORD local_port, UINT8 proto, DWORD state) { WCHAR remote_addr_str[LEN_IP_MAX] = {0}; WCHAR local_addr_str[LEN_IP_MAX] = {0}; - if (af == AF_INET) - { - if (remote_addr) - RtlIpv4AddressToString ((PIN_ADDR)remote_addr, remote_addr_str); + if (remote_addr) + _app_formatip (af, remote_addr, remote_addr_str, RTL_NUMBER_OF (remote_addr_str)); - if (local_addr) - RtlIpv4AddressToString ((PIN_ADDR)local_addr, local_addr_str); - } - else if (af == AF_INET6) - { - if (remote_addr) - RtlIpv6AddressToString ((PIN6_ADDR)remote_addr, remote_addr_str); + if (local_addr) + _app_formatip (af, local_addr, local_addr_str, RTL_NUMBER_OF (local_addr_str)); - if (local_addr) - RtlIpv6AddressToString ((PIN6_ADDR)local_addr, local_addr_str); - } - else - { - return 0; - } - - return _r_str_hash (_r_fmt (L"%" PRIu8 L"_%" PRIu32 L"_%s_%" PRId32 L"_%s_%" PRIu32 L"_%" PRIu8 "_%" PRIu32, af, pid, remote_addr_str, remote_port, local_addr_str, local_port, proto, state)); + return _r_str_hash (_r_fmt (L"%" TEXT (PRIu8) L"_%" TEXT (PR_ULONG) L"_%s_%" TEXT (PR_ULONG) L"_%s_%" TEXT (PR_ULONG) L"_%" TEXT (PRIu8) L"_%" TEXT (PR_ULONG), af, pid, remote_addr_str, remote_port, local_addr_str, local_port, proto, state)); } -bool _app_isvalidconnection (ADDRESS_FAMILY af, const PVOID paddr) +BOOLEAN _app_isvalidconnection (ADDRESS_FAMILY af, const PVOID paddr) { if (af == AF_INET) { - PIN_ADDR p4addr = PIN_ADDR (paddr); + PIN_ADDR p4addr = (PIN_ADDR)paddr; return (!IN4_IS_ADDR_UNSPECIFIED (p4addr) && !IN4_IS_ADDR_LOOPBACK (p4addr) && @@ -1511,7 +1615,7 @@ bool _app_isvalidconnection (ADDRESS_FAMILY af, const PVOID paddr) } else if (af == AF_INET6) { - PIN6_ADDR p6addr = PIN6_ADDR (paddr); + PIN6_ADDR p6addr = (PIN6_ADDR)paddr; return (!IN6_IS_ADDR_UNSPECIFIED (p6addr) && !IN6_IS_ADDR_LOOPBACK (p6addr) && @@ -1522,234 +1626,234 @@ bool _app_isvalidconnection (ADDRESS_FAMILY af, const PVOID paddr) ); } - return false; + return FALSE; } -void _app_generate_connections (OBJECTS_MAP& ptr_map, HASHER_MAP& checker_map) +VOID _app_generate_connections (OBJECTS_NETWORK& ptr_map, HASHER_MAP& checker_map) { checker_map.clear (); DWORD tableSize = 0; - GetExtendedTcpTable (nullptr, &tableSize, FALSE, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0); + GetExtendedTcpTable (NULL, &tableSize, FALSE, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0); if (tableSize) { - PMIB_TCPTABLE_OWNER_MODULE tcp4Table = (PMIB_TCPTABLE_OWNER_MODULE)_r_mem_allocex (tableSize, HEAP_ZERO_MEMORY); + PMIB_TCPTABLE_OWNER_MODULE tcp4Table = (PMIB_TCPTABLE_OWNER_MODULE)_r_mem_allocatezero (tableSize); - if (tcp4Table) + if (GetExtendedTcpTable (tcp4Table, &tableSize, FALSE, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0) == NO_ERROR) { - if (GetExtendedTcpTable (tcp4Table, &tableSize, FALSE, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0) == NO_ERROR) + for (DWORD i = 0; i < tcp4Table->dwNumEntries; i++) { - for (DWORD i = 0; i < tcp4Table->dwNumEntries; i++) + IN_ADDR remote_addr = {0}; + IN_ADDR local_addr = {0}; + + remote_addr.S_un.S_addr = tcp4Table->table[i].dwRemoteAddr; + local_addr.S_un.S_addr = tcp4Table->table[i].dwLocalAddr; + + SIZE_T net_hash = _app_getnetworkhash (AF_INET, tcp4Table->table[i].dwOwningPid, &remote_addr, tcp4Table->table[i].dwRemotePort, &local_addr, tcp4Table->table[i].dwLocalPort, IPPROTO_TCP, tcp4Table->table[i].dwState); + + if (!net_hash) + continue; + + if (ptr_map.find (net_hash) != ptr_map.end ()) { - IN_ADDR remote_addr = {0}; - IN_ADDR local_addr = {0}; - - remote_addr.S_un.S_addr = tcp4Table->table[i].dwRemoteAddr; - local_addr.S_un.S_addr = tcp4Table->table[i].dwLocalAddr; - - const size_t net_hash = _app_getnetworkhash (AF_INET, tcp4Table->table[i].dwOwningPid, &remote_addr, tcp4Table->table[i].dwRemotePort, &local_addr, tcp4Table->table[i].dwLocalPort, IPPROTO_TCP, tcp4Table->table[i].dwState); - - if (!net_hash || ptr_map.find (net_hash) != ptr_map.end ()) - { - checker_map[net_hash] = false; - continue; - } - - PITEM_NETWORK ptr_network = new ITEM_NETWORK; - - const rstring path = _app_getnetworkpath (tcp4Table->table[i].dwOwningPid, tcp4Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); - - _r_str_alloc (&ptr_network->path, path.GetLength (), path); - - ptr_network->af = AF_INET; - ptr_network->protocol = IPPROTO_TCP; - - ptr_network->remote_addr.S_un.S_addr = tcp4Table->table[i].dwRemoteAddr; - ptr_network->remote_port = _byteswap_ushort ((USHORT)tcp4Table->table[i].dwRemotePort); - - ptr_network->local_addr.S_un.S_addr = tcp4Table->table[i].dwLocalAddr; - ptr_network->local_port = _byteswap_ushort ((USHORT)tcp4Table->table[i].dwLocalPort); - - ptr_network->state = tcp4Table->table[i].dwState; - - if (tcp4Table->table[i].dwState == MIB_TCP_STATE_ESTAB) - { - if (_app_isvalidconnection (ptr_network->af, &ptr_network->remote_addr) || _app_isvalidconnection (ptr_network->af, &ptr_network->local_addr)) - ptr_network->is_connection = true; - } - - ptr_map[net_hash] = _r_obj_allocate (ptr_network, &_app_dereferencenetwork); - checker_map[net_hash] = true; + checker_map[net_hash] = FALSE; + continue; } - } - _r_mem_free (tcp4Table); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_allocateex (sizeof (ITEM_NETWORK), &_app_dereferencenetwork); + + rstring path = _app_getnetworkpath (tcp4Table->table[i].dwOwningPid, tcp4Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); + + _r_str_alloc (&ptr_network->path, path.GetLength (), path); + + ptr_network->af = AF_INET; + ptr_network->protocol = IPPROTO_TCP; + + ptr_network->remote_addr.S_un.S_addr = tcp4Table->table[i].dwRemoteAddr; + ptr_network->remote_port = _r_byteswap_ushort ((USHORT)tcp4Table->table[i].dwRemotePort); + + ptr_network->local_addr.S_un.S_addr = tcp4Table->table[i].dwLocalAddr; + ptr_network->local_port = _r_byteswap_ushort ((USHORT)tcp4Table->table[i].dwLocalPort); + + ptr_network->state = tcp4Table->table[i].dwState; + + if (tcp4Table->table[i].dwState == MIB_TCP_STATE_ESTAB) + { + if (_app_isvalidconnection (ptr_network->af, &ptr_network->remote_addr) || _app_isvalidconnection (ptr_network->af, &ptr_network->local_addr)) + ptr_network->is_connection = TRUE; + } + + ptr_map[net_hash] = ptr_network; + checker_map[net_hash] = TRUE; + } } + + _r_mem_free (tcp4Table); } tableSize = 0; - GetExtendedTcpTable (nullptr, &tableSize, FALSE, AF_INET6, TCP_TABLE_OWNER_MODULE_ALL, 0); + GetExtendedTcpTable (NULL, &tableSize, FALSE, AF_INET6, TCP_TABLE_OWNER_MODULE_ALL, 0); if (tableSize) { - PMIB_TCP6TABLE_OWNER_MODULE tcp6Table = (PMIB_TCP6TABLE_OWNER_MODULE)_r_mem_allocex (tableSize, HEAP_ZERO_MEMORY); + PMIB_TCP6TABLE_OWNER_MODULE tcp6Table = (PMIB_TCP6TABLE_OWNER_MODULE)_r_mem_allocatezero (tableSize); - if (tcp6Table) + if (GetExtendedTcpTable (tcp6Table, &tableSize, FALSE, AF_INET6, TCP_TABLE_OWNER_MODULE_ALL, 0) == NO_ERROR) { - if (GetExtendedTcpTable (tcp6Table, &tableSize, FALSE, AF_INET6, TCP_TABLE_OWNER_MODULE_ALL, 0) == NO_ERROR) + for (DWORD i = 0; i < tcp6Table->dwNumEntries; i++) { - for (DWORD i = 0; i < tcp6Table->dwNumEntries; i++) + SIZE_T net_hash = _app_getnetworkhash (AF_INET6, tcp6Table->table[i].dwOwningPid, tcp6Table->table[i].ucRemoteAddr, tcp6Table->table[i].dwRemotePort, tcp6Table->table[i].ucLocalAddr, tcp6Table->table[i].dwLocalPort, IPPROTO_TCP, tcp6Table->table[i].dwState); + + if (!net_hash) + continue; + + if (ptr_map.find (net_hash) != ptr_map.end ()) { - const size_t net_hash = _app_getnetworkhash (AF_INET6, tcp6Table->table[i].dwOwningPid, tcp6Table->table[i].ucRemoteAddr, tcp6Table->table[i].dwRemotePort, tcp6Table->table[i].ucLocalAddr, tcp6Table->table[i].dwLocalPort, IPPROTO_TCP, tcp6Table->table[i].dwState); - - if (!net_hash || ptr_map.find (net_hash) != ptr_map.end ()) - { - checker_map[net_hash] = false; - continue; - } - - PITEM_NETWORK ptr_network = new ITEM_NETWORK; - - const rstring path = _app_getnetworkpath (tcp6Table->table[i].dwOwningPid, tcp6Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); - - _r_str_alloc (&ptr_network->path, path.GetLength (), path); - - ptr_network->af = AF_INET6; - ptr_network->protocol = IPPROTO_TCP; - - RtlCopyMemory (ptr_network->remote_addr6.u.Byte, tcp6Table->table[i].ucRemoteAddr, FWP_V6_ADDR_SIZE); - ptr_network->remote_port = _byteswap_ushort ((USHORT)tcp6Table->table[i].dwRemotePort); - - RtlCopyMemory (ptr_network->local_addr6.u.Byte, tcp6Table->table[i].ucLocalAddr, FWP_V6_ADDR_SIZE); - ptr_network->local_port = _byteswap_ushort ((USHORT)tcp6Table->table[i].dwLocalPort); - - ptr_network->state = tcp6Table->table[i].dwState; - - if (tcp6Table->table[i].dwState == MIB_TCP_STATE_ESTAB) - { - if (_app_isvalidconnection (ptr_network->af, &ptr_network->remote_addr6) || _app_isvalidconnection (ptr_network->af, &ptr_network->local_addr6)) - ptr_network->is_connection = true; - } - - ptr_map[net_hash] = _r_obj_allocate (ptr_network, &_app_dereferencenetwork); - checker_map[net_hash] = true; + checker_map[net_hash] = FALSE; + continue; } - } - _r_mem_free (tcp6Table); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_allocateex (sizeof (ITEM_NETWORK), &_app_dereferencenetwork); + + rstring path = _app_getnetworkpath (tcp6Table->table[i].dwOwningPid, tcp6Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); + + _r_str_alloc (&ptr_network->path, path.GetLength (), path); + + ptr_network->af = AF_INET6; + ptr_network->protocol = IPPROTO_TCP; + + RtlCopyMemory (ptr_network->remote_addr6.u.Byte, tcp6Table->table[i].ucRemoteAddr, FWP_V6_ADDR_SIZE); + ptr_network->remote_port = _r_byteswap_ushort ((USHORT)tcp6Table->table[i].dwRemotePort); + + RtlCopyMemory (ptr_network->local_addr6.u.Byte, tcp6Table->table[i].ucLocalAddr, FWP_V6_ADDR_SIZE); + ptr_network->local_port = _r_byteswap_ushort ((USHORT)tcp6Table->table[i].dwLocalPort); + + ptr_network->state = tcp6Table->table[i].dwState; + + if (tcp6Table->table[i].dwState == MIB_TCP_STATE_ESTAB) + { + if (_app_isvalidconnection (ptr_network->af, &ptr_network->remote_addr6) || _app_isvalidconnection (ptr_network->af, &ptr_network->local_addr6)) + ptr_network->is_connection = TRUE; + } + + ptr_map[net_hash] = ptr_network; + checker_map[net_hash] = TRUE; + } } + + _r_mem_free (tcp6Table); } tableSize = 0; - GetExtendedUdpTable (nullptr, &tableSize, FALSE, AF_INET, UDP_TABLE_OWNER_MODULE, 0); + GetExtendedUdpTable (NULL, &tableSize, FALSE, AF_INET, UDP_TABLE_OWNER_MODULE, 0); if (tableSize) { - PMIB_UDPTABLE_OWNER_MODULE udp4Table = (PMIB_UDPTABLE_OWNER_MODULE)_r_mem_allocex (tableSize, HEAP_ZERO_MEMORY); + PMIB_UDPTABLE_OWNER_MODULE udp4Table = (PMIB_UDPTABLE_OWNER_MODULE)_r_mem_allocatezero (tableSize); - if (udp4Table) + if (GetExtendedUdpTable (udp4Table, &tableSize, FALSE, AF_INET, UDP_TABLE_OWNER_MODULE, 0) == NO_ERROR) { - if (GetExtendedUdpTable (udp4Table, &tableSize, FALSE, AF_INET, UDP_TABLE_OWNER_MODULE, 0) == NO_ERROR) + for (DWORD i = 0; i < udp4Table->dwNumEntries; i++) { - for (DWORD i = 0; i < udp4Table->dwNumEntries; i++) + IN_ADDR local_addr = {0}; + local_addr.S_un.S_addr = udp4Table->table[i].dwLocalAddr; + + SIZE_T net_hash = _app_getnetworkhash (AF_INET, udp4Table->table[i].dwOwningPid, NULL, 0, &local_addr, udp4Table->table[i].dwLocalPort, IPPROTO_UDP, 0); + + if (!net_hash) + continue; + + if (ptr_map.find (net_hash) != ptr_map.end ()) { - IN_ADDR local_addr = {0}; - local_addr.S_un.S_addr = udp4Table->table[i].dwLocalAddr; - - const size_t net_hash = _app_getnetworkhash (AF_INET, udp4Table->table[i].dwOwningPid, nullptr, 0, &local_addr, udp4Table->table[i].dwLocalPort, IPPROTO_UDP, 0); - - if (!net_hash || ptr_map.find (net_hash) != ptr_map.end ()) - { - checker_map[net_hash] = false; - continue; - } - - PITEM_NETWORK ptr_network = new ITEM_NETWORK; - - const rstring path = _app_getnetworkpath (udp4Table->table[i].dwOwningPid, udp4Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); - - _r_str_alloc (&ptr_network->path, path.GetLength (), path); - - ptr_network->af = AF_INET; - ptr_network->protocol = IPPROTO_UDP; - - ptr_network->local_addr.S_un.S_addr = udp4Table->table[i].dwLocalAddr; - ptr_network->local_port = _byteswap_ushort ((USHORT)udp4Table->table[i].dwLocalPort); - - ptr_network->state = 0; - - if (_app_isvalidconnection (ptr_network->af, &ptr_network->local_addr)) - ptr_network->is_connection = true; - - ptr_map[net_hash] = _r_obj_allocate (ptr_network, &_app_dereferencenetwork); - checker_map[net_hash] = true; + checker_map[net_hash] = FALSE; + continue; } - } - _r_mem_free (udp4Table); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_allocateex (sizeof (ITEM_NETWORK), &_app_dereferencenetwork); + + rstring path = _app_getnetworkpath (udp4Table->table[i].dwOwningPid, udp4Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); + + _r_str_alloc (&ptr_network->path, path.GetLength (), path); + + ptr_network->af = AF_INET; + ptr_network->protocol = IPPROTO_UDP; + + ptr_network->local_addr.S_un.S_addr = udp4Table->table[i].dwLocalAddr; + ptr_network->local_port = _r_byteswap_ushort ((USHORT)udp4Table->table[i].dwLocalPort); + + ptr_network->state = 0; + + if (_app_isvalidconnection (ptr_network->af, &ptr_network->local_addr)) + ptr_network->is_connection = TRUE; + + ptr_map[net_hash] = ptr_network; + checker_map[net_hash] = TRUE; + } } + + _r_mem_free (udp4Table); } tableSize = 0; - GetExtendedUdpTable (nullptr, &tableSize, FALSE, AF_INET6, UDP_TABLE_OWNER_MODULE, 0); + GetExtendedUdpTable (NULL, &tableSize, FALSE, AF_INET6, UDP_TABLE_OWNER_MODULE, 0); if (tableSize) { - PMIB_UDP6TABLE_OWNER_MODULE udp6Table = (PMIB_UDP6TABLE_OWNER_MODULE)_r_mem_allocex (tableSize, HEAP_ZERO_MEMORY); + PMIB_UDP6TABLE_OWNER_MODULE udp6Table = (PMIB_UDP6TABLE_OWNER_MODULE)_r_mem_allocatezero (tableSize); - if (udp6Table) + if (GetExtendedUdpTable (udp6Table, &tableSize, FALSE, AF_INET6, UDP_TABLE_OWNER_MODULE, 0) == NO_ERROR) { - if (GetExtendedUdpTable (udp6Table, &tableSize, FALSE, AF_INET6, UDP_TABLE_OWNER_MODULE, 0) == NO_ERROR) + for (DWORD i = 0; i < udp6Table->dwNumEntries; i++) { - for (DWORD i = 0; i < udp6Table->dwNumEntries; i++) + SIZE_T net_hash = _app_getnetworkhash (AF_INET6, udp6Table->table[i].dwOwningPid, NULL, 0, udp6Table->table[i].ucLocalAddr, udp6Table->table[i].dwLocalPort, IPPROTO_UDP, 0); + + if (!net_hash) + continue; + + if (ptr_map.find (net_hash) != ptr_map.end ()) { - const size_t net_hash = _app_getnetworkhash (AF_INET6, udp6Table->table[i].dwOwningPid, nullptr, 0, udp6Table->table[i].ucLocalAddr, udp6Table->table[i].dwLocalPort, IPPROTO_UDP, 0); - - if (!net_hash || ptr_map.find (net_hash) != ptr_map.end ()) - { - checker_map[net_hash] = false; - continue; - } - - PITEM_NETWORK ptr_network = new ITEM_NETWORK; - - const rstring path = _app_getnetworkpath (udp6Table->table[i].dwOwningPid, udp6Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); - - _r_str_alloc (&ptr_network->path, path.GetLength (), path); - - ptr_network->af = AF_INET6; - ptr_network->protocol = IPPROTO_UDP; - - RtlCopyMemory (ptr_network->local_addr6.u.Byte, udp6Table->table[i].ucLocalAddr, FWP_V6_ADDR_SIZE); - ptr_network->local_port = _byteswap_ushort ((USHORT)udp6Table->table[i].dwLocalPort); - - ptr_network->state = 0; - - if (_app_isvalidconnection (ptr_network->af, &ptr_network->local_addr6)) - ptr_network->is_connection = true; - - ptr_map[net_hash] = _r_obj_allocate (ptr_network, &_app_dereferencenetwork); - checker_map[net_hash] = true; + checker_map[net_hash] = FALSE; + continue; } - } - _r_mem_free (udp6Table); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_allocateex (sizeof (ITEM_NETWORK), &_app_dereferencenetwork); + + rstring path = _app_getnetworkpath (udp6Table->table[i].dwOwningPid, udp6Table->table[i].OwningModuleInfo, &ptr_network->icon_id, &ptr_network->app_hash); + + _r_str_alloc (&ptr_network->path, path.GetLength (), path); + + ptr_network->af = AF_INET6; + ptr_network->protocol = IPPROTO_UDP; + + RtlCopyMemory (ptr_network->local_addr6.u.Byte, udp6Table->table[i].ucLocalAddr, FWP_V6_ADDR_SIZE); + ptr_network->local_port = _r_byteswap_ushort ((USHORT)udp6Table->table[i].dwLocalPort); + + ptr_network->state = 0; + + if (_app_isvalidconnection (ptr_network->af, &ptr_network->local_addr6)) + ptr_network->is_connection = TRUE; + + ptr_map[net_hash] = ptr_network; + checker_map[net_hash] = TRUE; + } } + + _r_mem_free (udp6Table); } } -void _app_generate_packages () +VOID _app_generate_packages () { - HKEY hkey = nullptr; - HKEY hsubkey = nullptr; + HKEY hkey = NULL; + HKEY hsubkey = NULL; LONG rc = RegOpenKeyEx (HKEY_CLASSES_ROOT, L"Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppModel\\Repository\\Packages", 0, KEY_READ, &hkey); if (rc == ERROR_SUCCESS) { DWORD index = 0; - const DWORD max_length = _r_reg_querysubkeylength (hkey); + DWORD max_length = _r_reg_querysubkeylength (hkey); if (!max_length) { @@ -1757,13 +1861,13 @@ void _app_generate_packages () return; } - LPWSTR key_name = new WCHAR[max_length + 1]; + LPWSTR key_name = (LPWSTR)_r_mem_allocatezero ((max_length + 1) * sizeof (WCHAR)); - while (true) + while (TRUE) { DWORD size = max_length; - if (RegEnumKeyEx (hkey, index++, key_name, &size, nullptr, nullptr, nullptr, nullptr) != ERROR_SUCCESS) + if (RegEnumKeyEx (hkey, index++, key_name, &size, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) break; rc = RegOpenKeyEx (hkey, key_name, 0, KEY_READ, &hsubkey); @@ -1772,7 +1876,7 @@ void _app_generate_packages () { LPBYTE package_sid = _r_reg_querybinary (hsubkey, L"PackageSid"); - if (!package_sid || !IsValidSid (package_sid)) + if (!package_sid || !RtlValidSid (package_sid)) { RegCloseKey (hsubkey); continue; @@ -1788,9 +1892,9 @@ void _app_generate_packages () continue; } - const size_t app_hash = _r_str_hash (package_sid_string); + SIZE_T app_hash = _r_str_hash (package_sid_string); - if (apps_helper.find (app_hash) != apps_helper.end ()) + if (_app_isapphelperfound (app_hash)) { _r_mem_free (package_sid); RegCloseKey (hsubkey); @@ -1806,7 +1910,7 @@ void _app_generate_packages () { WCHAR name[MAX_PATH] = {0}; - if (SUCCEEDED (SHLoadIndirectString (display_name, name, _countof (name), nullptr))) + if (SUCCEEDED (SHLoadIndirectString (display_name, name, RTL_NUMBER_OF (name), NULL))) display_name = name; else @@ -1822,7 +1926,7 @@ void _app_generate_packages () continue; } - PITEM_APP_HELPER ptr_item = new ITEM_APP_HELPER; + PITEM_APP_HELPER ptr_item = (PITEM_APP_HELPER)_r_obj_allocateex (sizeof (ITEM_APP_HELPER), &_app_dereferenceappshelper); ptr_item->type = DataAppUWP; ptr_item->pdata = package_sid; @@ -1843,62 +1947,62 @@ void _app_generate_packages () // load additional info from appx manifest _app_load_appxmanifest (ptr_item); - apps_helper[app_hash] = _r_obj_allocate (ptr_item, &_app_dereferenceappshelper); + apps_helper[app_hash] = ptr_item; } } - SAFE_DELETE_ARRAY (key_name); + _r_mem_free (key_name); RegCloseKey (hkey); } } -void _app_generate_services () +VOID _app_generate_services () { - const SC_HANDLE hsvcmgr = OpenSCManager (nullptr, nullptr, SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE); + SC_HANDLE hsvcmgr = OpenSCManager (NULL, NULL, SC_MANAGER_CONNECT | SC_MANAGER_ENUMERATE_SERVICE); if (!hsvcmgr) return; - static const DWORD initialBufferSize = 0x8000; + static DWORD initialBufferSize = 0x8000; DWORD returnLength = 0; DWORD servicesReturned = 0; DWORD dwServiceType = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS; - const DWORD dwServiceState = SERVICE_STATE_ALL; + DWORD dwServiceState = SERVICE_STATE_ALL; // win10+ if (_r_sys_validversion (10, 0)) dwServiceType |= SERVICE_INTERACTIVE_PROCESS | SERVICE_USER_SERVICE | SERVICE_USERSERVICE_INSTANCE; DWORD bufferSize = initialBufferSize; - LPVOID pBuffer = _r_mem_allocex (bufferSize, HEAP_ZERO_MEMORY); + LPVOID pBuffer = _r_mem_allocatezero (bufferSize); if (!pBuffer) return; - if (!EnumServicesStatusEx (hsvcmgr, SC_ENUM_PROCESS_INFO, dwServiceType, dwServiceState, (LPBYTE)pBuffer, bufferSize, &returnLength, &servicesReturned, nullptr, nullptr)) + if (!EnumServicesStatusEx (hsvcmgr, SC_ENUM_PROCESS_INFO, dwServiceType, dwServiceState, (LPBYTE)pBuffer, bufferSize, &returnLength, &servicesReturned, NULL, NULL)) { if (GetLastError () == ERROR_MORE_DATA) { // Set the buffer bufferSize += returnLength; - pBuffer = _r_mem_reallocex (pBuffer, bufferSize, HEAP_ZERO_MEMORY); + pBuffer = _r_mem_reallocateex (pBuffer, bufferSize, HEAP_ZERO_MEMORY); if (pBuffer) { // Now query again for services - if (!EnumServicesStatusEx (hsvcmgr, SC_ENUM_PROCESS_INFO, dwServiceType, dwServiceState, (LPBYTE)pBuffer, bufferSize, &returnLength, &servicesReturned, nullptr, nullptr)) + if (!EnumServicesStatusEx (hsvcmgr, SC_ENUM_PROCESS_INFO, dwServiceType, dwServiceState, (LPBYTE)pBuffer, bufferSize, &returnLength, &servicesReturned, NULL, NULL)) { _r_mem_free (pBuffer); - pBuffer = nullptr; + pBuffer = NULL; } } } else { _r_mem_free (pBuffer); - pBuffer = nullptr; + pBuffer = NULL; } } @@ -1916,14 +2020,14 @@ void _app_generate_services () time_t timestamp = 0; - const size_t app_hash = _r_str_hash (service_name); + SIZE_T app_hash = _r_str_hash (service_name); - if (apps_helper.find (app_hash) != apps_helper.end ()) + if (_app_isapphelperfound (app_hash)) continue; // query "ServiceDll" path { - HKEY hkey = nullptr; + HKEY hkey = NULL; if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, _r_fmt (L"System\\CurrentControlSet\\Services\\%s\\Parameters", service_name), 0, KEY_READ, &hkey) == ERROR_SUCCESS) { @@ -1940,7 +2044,7 @@ void _app_generate_services () // fallback if (real_path.IsEmpty () || !timestamp) { - HKEY hkey = nullptr; + HKEY hkey = NULL; if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, _r_fmt (L"System\\CurrentControlSet\\Services\\%s", service_name), 0, KEY_READ, &hkey) == ERROR_SUCCESS) { @@ -1970,30 +2074,32 @@ void _app_generate_services () if (!real_path.IsEmpty ()) real_path = _r_path_dospathfromnt (real_path); - rstring sidstring; - LPVOID serviceSid = _app_queryservicesid (service_name); + PSID pserviceSid = _app_queryservicesid (service_name); - if (serviceSid) - sidstring = _r_str_fromsid (serviceSid); - - if (serviceSid && !sidstring.IsEmpty ()) + if (pserviceSid) { - PVOID pservice_sd = nullptr; - size_t sd_length = 0; + PVOID pservice_sd = NULL; + DWORD sd_length = 0; - if (ConvertStringSecurityDescriptorToSecurityDescriptor (_r_fmt (SERVICE_SECURITY_DESCRIPTOR, sidstring.GetString ()), SDDL_REVISION_1, &pservice_sd, nullptr)) - { - if (IsValidSecurityDescriptor (pservice_sd)) - sd_length = GetSecurityDescriptorLength (pservice_sd); + EXPLICIT_ACCESS ea; + RtlSecureZeroMemory (&ea, sizeof (ea)); - else - SAFE_LOCAL_FREE (pservice_sd); - } + // When evaluating SECURITY_DESCRIPTOR conditions, the filter engine + // checks for FWP_ACTRL_MATCH_FILTER access. If the DACL grants access, + // it does not mean that the traffic is allowed; it just means that the + // condition evaluates to true. Likewise if it denies access, the + // condition evaluates to false. + _app_setexplicitaccess (&ea, GRANT_ACCESS, NO_INHERITANCE, FWP_ACTRL_MATCH_FILTER, pserviceSid); - if (!pservice_sd) + // Security descriptors must be in self-relative form (i.e., contiguous). + // The security descriptor returned by BuildSecurityDescriptorW is + // already self-relative, but if you're using another mechanism to build + // the descriptor, you may have to convert it. See MakeSelfRelativeSD for + // details. + if (BuildSecurityDescriptor (NULL, NULL, 1, &ea, 0, NULL, NULL, &sd_length, &pservice_sd) != ERROR_SUCCESS) continue; - PITEM_APP_HELPER ptr_item = new ITEM_APP_HELPER; + PITEM_APP_HELPER ptr_item = (PITEM_APP_HELPER)_r_obj_allocateex (sizeof (ITEM_APP_HELPER), &_app_dereferenceappshelper); ptr_item->type = DataAppService; ptr_item->timestamp = timestamp; @@ -2002,17 +2108,15 @@ void _app_generate_services () _r_str_alloc (&ptr_item->real_path, real_path.GetLength (), real_path); _r_str_alloc (&ptr_item->internal_name, _r_str_length (service_name), service_name); - _r_str_toupper (sidstring.GetBuffer ()); - - ptr_item->pdata = _r_mem_alloc (sd_length); + ptr_item->pdata = _r_mem_allocatezero (sd_length); RtlCopyMemory (ptr_item->pdata, pservice_sd, sd_length); - SAFE_LOCAL_FREE (pservice_sd); + SAFE_DELETE_LOCAL (pservice_sd); - apps_helper[app_hash] = _r_obj_allocate (ptr_item, &_app_dereferenceappshelper); + apps_helper[app_hash] = ptr_item; + + _r_mem_free (pserviceSid); } - - _r_mem_free (serviceSid); } _r_mem_free (pBuffer); @@ -2021,21 +2125,18 @@ void _app_generate_services () CloseServiceHandle (hsvcmgr); } -void _app_generate_rulesmenu (HMENU hsubmenu, size_t app_hash) +VOID _app_generate_rulesmenu (HMENU hsubmenu, SIZE_T app_hash) { - PITEM_STATUS pstatus = (PITEM_STATUS)_r_mem_allocex (sizeof (ITEM_STATUS), HEAP_ZERO_MEMORY); - - if (!pstatus) - return; + PITEM_STATUS pstatus = (PITEM_STATUS)_r_mem_allocatezero (sizeof (ITEM_STATUS)); _app_getcount (pstatus); if (!app_hash || !pstatus->rules_count) { - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hsubmenu, MF_STRING, IDX_RULES_SPECIAL, app.LocaleString (IDS_STATUS_EMPTY, nullptr)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hsubmenu, MF_STRING, IDX_RULES_SPECIAL, app.LocaleString (IDS_STATUS_EMPTY, NULL)); - _r_menu_enableitem (hsubmenu, IDX_RULES_SPECIAL, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, IDX_RULES_SPECIAL, MF_BYCOMMAND, FALSE); } else { @@ -2052,41 +2153,39 @@ void _app_generate_rulesmenu (HMENU hsubmenu, size_t app_hash) continue; } - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); for (UINT8 loop = 0; loop < 2; loop++) { - INT index = INVALID_INT; - - for (auto &p : rules_arr) + for (SIZE_T i = 0; i < rules_arr.size (); i++) { - index += 1; - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = rules_arr.at (i); if (!ptr_rule_object) continue; + ptr_rule_object = _r_obj2_reference (ptr_rule_object); PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) { - const bool is_global = (ptr_rule->is_enabled && ptr_rule->apps.empty ()); - const bool is_enabled = is_global || (ptr_rule->is_enabled && (ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ())); + BOOLEAN is_global = (ptr_rule->is_enabled && ptr_rule->apps.empty ()); + BOOLEAN is_enabled = is_global || (ptr_rule->is_enabled && (ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ())); if (ptr_rule->type != DataRuleCustom || (type == 0 && (!ptr_rule->is_readonly || is_global)) || (type == 1 && (ptr_rule->is_readonly || is_global))) { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); continue; } if ((loop == 0 && !is_enabled) || (loop == 1 && is_enabled)) { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); continue; } WCHAR buffer[128] = {0}; - _r_str_printf (buffer, _countof (buffer), app.LocaleString (IDS_RULE_APPLY_2, ptr_rule->is_readonly ? SZ_RULE_INTERNAL_MENU : nullptr), ptr_rule->pname); + _r_str_printf (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_RULE_APPLY_2, ptr_rule->is_readonly ? SZ_RULE_INTERNAL_MENU : NULL), ptr_rule->pname); MENUITEMINFO mii = {0}; @@ -2098,115 +2197,103 @@ void _app_generate_rulesmenu (HMENU hsubmenu, size_t app_hash) mii.hbmpChecked = config.hbmp_checked; mii.hbmpUnchecked = config.hbmp_unchecked; mii.fState = (is_enabled ? MF_CHECKED : MF_UNCHECKED); - mii.wID = IDX_RULES_SPECIAL + index; + mii.wID = IDX_RULES_SPECIAL + (UINT)i; InsertMenuItem (hsubmenu, mii.wID, FALSE, &mii); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } } } - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hsubmenu, MF_STRING, IDM_EDITRULES, app.LocaleString (IDS_EDITRULES, nullptr)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hsubmenu, MF_STRING, IDM_EDITRULES, app.LocaleString (IDS_EDITRULES, NULL)); AppendMenu (hsubmenu, MF_STRING, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"...")); _r_mem_free (pstatus); } -void _app_generate_timermenu (HMENU hsubmenu, size_t app_hash) +VOID _app_generate_timermenu (HMENU hsubmenu, SIZE_T app_hash) { - bool is_checked = (app_hash == 0); + BOOLEAN is_checked = (app_hash == 0); - const time_t current_time = _r_unixtime_now (); - const time_t* ptime = (time_t*)_app_getappinfo (app_hash, InfoTimerPtr); - const time_t app_time = ptime ? *ptime : 0; + time_t current_time = _r_unixtime_now (); + time_t* ptime = (time_t*)_app_getappinfo (app_hash, InfoTimerPtr); + time_t app_time = ptime ? *ptime : 0; - UINT index = 0; - - for (auto &timer : timers) + for (SIZE_T i = 0; i < timers.size (); i++) { - AppendMenu (hsubmenu, MF_STRING, IDX_TIMER + index, _r_fmt_interval (timer + 1, 1)); + UINT menu_id = IDX_TIMER + (UINT)i; + time_t timer = timers.at (i); + + AppendMenu (hsubmenu, MF_STRING, menu_id, _r_fmt_interval (timer + 1, 1)); if (!is_checked && (app_time > current_time) && (app_time <= (current_time + timer))) { - _r_menu_checkitem (hsubmenu, IDX_TIMER, IDX_TIMER + index, MF_BYCOMMAND, IDX_TIMER + index); - is_checked = true; + _r_menu_checkitem (hsubmenu, IDX_TIMER, menu_id, MF_BYCOMMAND, menu_id); + is_checked = TRUE; } - - index += 1; } if (!is_checked) _r_menu_checkitem (hsubmenu, IDM_DISABLETIMER, IDM_DISABLETIMER, MF_BYCOMMAND, IDM_DISABLETIMER); } -bool _app_item_get (EnumDataType type, size_t app_hash, rstring* display_name, rstring* real_path, time_t* ptime, void** lpdata) +BOOLEAN _app_item_get (ENUM_TYPE_DATA type, SIZE_T app_hash, rstring* display_name, rstring* real_path, time_t* ptime, LPVOID* lpdata) { - if (apps_helper.find (app_hash) == apps_helper.end ()) - return false; + PITEM_APP_HELPER ptr_app_item = _app_getapphelperitem (app_hash); - PR_OBJECT ptr_app_object = _r_obj_reference (apps_helper[app_hash]); + if (!ptr_app_item) + return FALSE; - if (ptr_app_object) + if (ptr_app_item->type != type) { - PITEM_APP_HELPER ptr_app_item = (PITEM_APP_HELPER)ptr_app_object->pdata; - - if (ptr_app_item) - { - if (ptr_app_item->type != type) - { - _r_obj_dereference (ptr_app_object); - return false; - } - - if (display_name) - { - if (!_r_str_isempty (ptr_app_item->display_name)) - *display_name = ptr_app_item->display_name; - - else if (!_r_str_isempty (ptr_app_item->real_path)) - *display_name = ptr_app_item->real_path; - - else if (!_r_str_isempty (ptr_app_item->internal_name)) - *display_name = ptr_app_item->internal_name; - } - - if (real_path) - { - if (!_r_str_isempty (ptr_app_item->real_path)) - *real_path = ptr_app_item->real_path; - } - - if (lpdata) - *lpdata = ptr_app_item->pdata; - - if (ptime) - *ptime = ptr_app_item->timestamp; - - _r_obj_dereference (ptr_app_object); - return true; - } - - _r_obj_dereference (ptr_app_object); + _r_obj_dereference (ptr_app_item); + return FALSE; } - return false; + if (display_name) + { + if (!_r_str_isempty (ptr_app_item->display_name)) + *display_name = ptr_app_item->display_name; + + else if (!_r_str_isempty (ptr_app_item->real_path)) + *display_name = ptr_app_item->real_path; + + else if (!_r_str_isempty (ptr_app_item->internal_name)) + *display_name = ptr_app_item->internal_name; + } + + if (real_path) + { + if (!_r_str_isempty (ptr_app_item->real_path)) + *real_path = ptr_app_item->real_path; + } + + if (lpdata) + *lpdata = ptr_app_item->pdata; + + if (ptime) + *ptime = ptr_app_item->timestamp; + + _r_obj_dereference (ptr_app_item); + + return TRUE; } rstring _app_parsehostaddress_dns (LPCWSTR hostname, USHORT port) { if (_r_str_isempty (hostname)) - return nullptr; + return NULL; rstring result; - PDNS_RECORD ppQueryResultsSet = nullptr; + PDNS_RECORD ppQueryResultsSet = NULL; // ipv4 address - DNS_STATUS dnsStatus = DnsQuery (hostname, DNS_TYPE_A, DNS_QUERY_NO_HOSTS_FILE, nullptr, &ppQueryResultsSet, nullptr); + DNS_STATUS dnsStatus = DnsQuery (hostname, DNS_TYPE_A, DNS_QUERY_NO_HOSTS_FILE, NULL, &ppQueryResultsSet, NULL); if (dnsStatus != DNS_ERROR_RCODE_NO_ERROR && dnsStatus != DNS_INFO_NO_RECORDS) { @@ -2216,28 +2303,29 @@ rstring _app_parsehostaddress_dns (LPCWSTR hostname, USHORT port) { if (ppQueryResultsSet) { - for (auto current = ppQueryResultsSet; current != nullptr; current = current->pNext) + for (auto ¤t = ppQueryResultsSet; current != NULL; current = current->pNext) { // ipv4 address WCHAR str[INET_ADDRSTRLEN] = {0}; - InetNtop (AF_INET, &(current->Data.A.IpAddress), str, _countof (str)); + if (_app_formatip (AF_INET, &(current->Data.A.IpAddress), str, RTL_NUMBER_OF (str))) + { + result.Append (str); - result.Append (str); + if (port) + result.AppendFormat (L":%d", port); - if (port) - result.AppendFormat (L":%d", port); - - result.Append (DIVIDER_RULE); + result.Append (DIVIDER_RULE); + } } DnsRecordListFree (ppQueryResultsSet, DnsFreeRecordList); - ppQueryResultsSet = nullptr; + ppQueryResultsSet = NULL; } } // ipv6 address - dnsStatus = DnsQuery (hostname, DNS_TYPE_AAAA, DNS_QUERY_NO_HOSTS_FILE, nullptr, &ppQueryResultsSet, nullptr); + dnsStatus = DnsQuery (hostname, DNS_TYPE_AAAA, DNS_QUERY_NO_HOSTS_FILE, NULL, &ppQueryResultsSet, NULL); if (dnsStatus != DNS_ERROR_RCODE_NO_ERROR && dnsStatus != DNS_INFO_NO_RECORDS) { @@ -2247,21 +2335,23 @@ rstring _app_parsehostaddress_dns (LPCWSTR hostname, USHORT port) { if (ppQueryResultsSet) { - for (auto current = ppQueryResultsSet; current != nullptr; current = current->pNext) + for (auto ¤t = ppQueryResultsSet; current != NULL; current = current->pNext) { WCHAR str[INET6_ADDRSTRLEN] = {0}; - InetNtop (AF_INET6, &(current->Data.AAAA.Ip6Address), str, _countof (str)); - result.Append (str); + if (_app_formatip (AF_INET6, &(current->Data.AAAA.Ip6Address), str, RTL_NUMBER_OF (str))) + { + result.Append (str); - if (port) - result.AppendFormat (L":%d", port); + if (port) + result.AppendFormat (L":%d", port); - result.Append (DIVIDER_RULE); + result.Append (DIVIDER_RULE); + } } DnsRecordListFree (ppQueryResultsSet, DnsFreeRecordList); - ppQueryResultsSet = nullptr; + ppQueryResultsSet = NULL; } } @@ -2269,102 +2359,22 @@ rstring _app_parsehostaddress_dns (LPCWSTR hostname, USHORT port) return result; } -// -//rstring _app_parsehostaddress_wsa (LPCWSTR hostname, USHORT port) -//{ -// if (_r_str_isempty (hostname) || !app.ConfigGet (L"IsEnableWsaResolver", false).AsBool ()) -// return nullptr; -// -// // initialize winsock (required by getnameinfo) -// WSADATA wsaData = {0}; -// INT rc = WSAStartup (WINSOCK_VERSION, &wsaData); -// -// if (rc != ERROR_SUCCESS) -// { -// app.LogError (L"WSAStartup", rc, nullptr, 0); -// return nullptr; -// } -// -// rstring result; -// -// ADDRINFOEXW hints = {0}; -// ADDRINFOEXW * ppQueryResultsSet = nullptr; -// -// hints.ai_family = AF_UNSPEC; -// hints.ai_socktype = SOCK_STREAM; -// hints.ai_protocol = IPPROTO_TCP; -// -// LPGUID lpNspid = nullptr; -// rc = GetAddrInfoEx (hostname, L"domain", NS_DNS, lpNspid, &hints, &ppQueryResultsSet, nullptr, nullptr, nullptr, nullptr); -// -// if (rc != ERROR_SUCCESS || !ppQueryResultsSet) -// { -// app.LogError (L"GetAddrInfoEx", rc, hostname, 0); -// return nullptr; -// } -// else -// { -// for (auto current = ppQueryResultsSet; current != nullptr; current = current->ai_next) -// { -// WCHAR printableIP[INET6_ADDRSTRLEN] = {0}; -// -// if (current->ai_family == AF_INET) -// { -// struct sockaddr_in* sock_in4 = (struct sockaddr_in*)current->ai_addr; -// PIN_ADDR addr4 = &(sock_in4->sin_addr); -// -// if (IN4_IS_ADDR_UNSPECIFIED (addr4)) -// continue; -// -// InetNtop (current->ai_family, addr4, printableIP, _countof (printableIP)); -// } -// else if (current->ai_family == AF_INET6) -// { -// struct sockaddr_in6* sock_in6 = (struct sockaddr_in6*)current->ai_addr; -// PIN6_ADDR addr6 = &(sock_in6->sin6_addr); -// -// if (IN6_IS_ADDR_UNSPECIFIED (addr6)) -// continue; -// -// InetNtop (current->ai_family, addr6, printableIP, _countof (printableIP)); -// } -// -// if (_r_str_isempty (printableIP)) -// continue; -// -// result.Append (printableIP); -// -// if (port) -// result.AppendFormat (L":%d", port); -// -// result.Append (DIVIDER_RULE); -// } -// -// _r_str_trim (result, DIVIDER_RULE); -// } -// -// FreeAddrInfoEx (ppQueryResultsSet); -// -// WSACleanup (); -// -// return result; -//} -bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * format_ptr, PUSHORT port_ptr, FWP_V4_ADDR_AND_MASK* paddr4, FWP_V6_ADDR_AND_MASK* paddr6, LPWSTR paddr_dns, size_t dns_length) +BOOLEAN _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT* format_ptr, PUSHORT port_ptr, FWP_V4_ADDR_AND_MASK* paddr4, FWP_V6_ADDR_AND_MASK* paddr6, LPWSTR paddr_dns, SIZE_T dns_length) { NET_ADDRESS_INFO ni; RtlSecureZeroMemory (&ni, sizeof (ni)); - USHORT port = 0; - BYTE prefix_length = 0; + USHORT port; + BYTE prefix_length; - const DWORD types = NET_STRING_ANY_ADDRESS | NET_STRING_ANY_SERVICE | NET_STRING_IP_NETWORK | NET_STRING_ANY_ADDRESS_NO_SCOPE | NET_STRING_ANY_SERVICE_NO_SCOPE; - const DWORD rc = ParseNetworkString (network_string, types, &ni, &port, &prefix_length); + DWORD types = NET_STRING_ANY_ADDRESS | NET_STRING_ANY_SERVICE | NET_STRING_IP_NETWORK | NET_STRING_ANY_ADDRESS_NO_SCOPE | NET_STRING_ANY_SERVICE_NO_SCOPE; + DWORD code = ParseNetworkString (network_string, types, &ni, &port, &prefix_length); - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { - app.LogError (L"ParseNetworkString", rc, network_string, 0); - return false; + app.LogError (L"ParseNetworkString", code, network_string, 0); + return FALSE; } else { @@ -2381,11 +2391,11 @@ bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * forma ULONG mask = 0; ConvertLengthToIpv4Mask (prefix_length, &mask); - paddr4->addr = ntohl (ni.Ipv4Address.sin_addr.S_un.S_addr); - paddr4->mask = ntohl (mask); + paddr4->addr = _r_byteswap_ulong (ni.Ipv4Address.sin_addr.S_un.S_addr); + paddr4->mask = _r_byteswap_ulong (mask); } - return true; + return TRUE; } else if (ni.Format == NET_ADDRESS_IPV6) { @@ -2395,26 +2405,25 @@ bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * forma paddr6->prefixLength = min (prefix_length, 128); } - return true; + return TRUE; } else if (ni.Format == NET_ADDRESS_DNS_NAME) { if (paddr_dns) { - const size_t dns_hash = _r_str_hash (ni.NamedAddress.Address); - - const bool is_exists = cache_dns.find (dns_hash) != cache_dns.end (); + SIZE_T dns_hash = _r_str_hash (ni.NamedAddress.Address); + BOOLEAN is_exists = cache_dns.find (dns_hash) != cache_dns.end (); if (is_exists) { - PR_OBJECT ptr_cache_object = _r_obj_reference (cache_dns[dns_hash]); + PR_OBJECT ptr_cache_object = _r_obj2_reference (cache_dns[dns_hash]); if (ptr_cache_object) { if (ptr_cache_object->pdata) _r_str_copy (paddr_dns, dns_length, (LPCWSTR)ptr_cache_object->pdata); - _r_obj_dereference (ptr_cache_object); + _r_obj2_dereference (ptr_cache_object); } return !_r_str_isempty (paddr_dns); @@ -2427,60 +2436,59 @@ bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT * forma if (host.IsEmpty ()) { - return false; + return FALSE; } else { _r_str_copy (paddr_dns, dns_length, host); - LPWSTR ptr_cache = nullptr; + LPWSTR ptr_cache = NULL; if (_r_str_alloc (&ptr_cache, host.GetLength (), host)) { _app_freeobjects_map (cache_dns, MAP_CACHE_MAX); - cache_dns[dns_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); + cache_dns[dns_hash] = _r_obj2_allocate (ptr_cache); } - return true; + return TRUE; } } - return true; + return TRUE; } } - return false; + return FALSE; } -bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) +BOOLEAN _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) { _r_str_trim (rule, DIVIDER_TRIM); // trim whitespace if (rule.IsEmpty ()) - return true; + return TRUE; if (!_app_isrulevalidchars (rule)) - return false; + return FALSE; - EnumDataType type = DataUnknown; - const size_t range_pos = _r_str_find (rule, rule.GetLength (), DIVIDER_RULE_RANGE); - bool is_range = (range_pos != INVALID_SIZE_T); + ENUM_TYPE_DATA type = DataUnknown; + SIZE_T range_pos = _r_str_find (rule, rule.GetLength (), DIVIDER_RULE_RANGE, 0); + BOOLEAN is_range = (range_pos != INVALID_SIZE_T); WCHAR range_start[LEN_IP_MAX] = {0}; WCHAR range_end[LEN_IP_MAX] = {0}; if (is_range) { - _r_str_copy (range_start, _countof (range_start), _r_str_extract (rule, rule.GetLength (), 0, range_pos)); - _r_str_copy (range_end, _countof (range_end), _r_str_extract (rule, rule.GetLength (), range_pos + 1)); + _r_str_copy (range_start, RTL_NUMBER_OF (range_start), _r_str_extract (rule, rule.GetLength (), 0, range_pos)); + _r_str_copy (range_end, RTL_NUMBER_OF (range_end), _r_str_extract (rule, rule.GetLength (), range_pos + 1)); } // auto-parse rule type { - const size_t rule_hash = _r_str_hash (rule); - - const bool is_exists = cache_types.find (rule_hash) != cache_types.end (); + SIZE_T rule_hash = _r_str_hash (rule); + BOOLEAN is_exists = cache_types.find (rule_hash) != cache_types.end (); if (is_exists) { @@ -2512,13 +2520,13 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) } if (type == DataUnknown) - return false; + return FALSE; if (!ptr_addr) - return true; + return TRUE; if (type == DataTypeHost) - is_range = false; + is_range = FALSE; ptr_addr->is_range = is_range; @@ -2528,9 +2536,9 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) { // ...port ptr_addr->type = DataTypePort; - ptr_addr->port = (UINT16)rule.AsUint (); + ptr_addr->port = (UINT16)_r_str_touinteger (rule); - return true; + return TRUE; } else { @@ -2540,13 +2548,13 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) if (ptr_addr->prange) { ptr_addr->prange->valueLow.type = FWP_UINT16; - ptr_addr->prange->valueLow.uint16 = (UINT16)wcstoul (range_start, nullptr, 10); + ptr_addr->prange->valueLow.uint16 = (UINT16)wcstoul (range_start, NULL, 10); ptr_addr->prange->valueHigh.type = FWP_UINT16; - ptr_addr->prange->valueHigh.uint16 = (UINT16)wcstoul (range_end, nullptr, 10); + ptr_addr->prange->valueHigh.uint16 = (UINT16)wcstoul (range_end, NULL, 10); } - return true; + return TRUE; } } else @@ -2561,7 +2569,7 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) if (type == DataTypeIp && is_range) { // ...ip range (start) - if (_app_parsenetworkstring (range_start, &format, &port2, &addr4, &addr6, nullptr, 0)) + if (_app_parsenetworkstring (range_start, &format, &port2, &addr4, &addr6, NULL, 0)) { if (format == NET_ADDRESS_IPV4) { @@ -2581,7 +2589,7 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) } else { - return false; + return FALSE; } if (port2 && !ptr_addr->port) @@ -2589,11 +2597,11 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) } else { - return false; + return FALSE; } // ...ip range (end) - if (_app_parsenetworkstring (range_end, &format, &port2, &addr4, &addr6, nullptr, 0)) + if (_app_parsenetworkstring (range_end, &format, &port2, &addr4, &addr6, NULL, 0)) { if (format == NET_ADDRESS_IPV4) { @@ -2613,12 +2621,12 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) } else { - return false; + return FALSE; } } else { - return false; + return FALSE; } ptr_addr->format = format; @@ -2627,7 +2635,7 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) else { // ...ip/host - if (_app_parsenetworkstring (rule, &format, &port2, &addr4, &addr6, ptr_addr->host, _countof (ptr_addr->host))) + if (_app_parsenetworkstring (rule, &format, &port2, &addr4, &addr6, ptr_addr->host, RTL_NUMBER_OF (ptr_addr->host))) { if (format == NET_ADDRESS_IPV4) { @@ -2651,7 +2659,7 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) } else { - return false; + return FALSE; } ptr_addr->type = DataTypeIp; @@ -2660,67 +2668,67 @@ bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr) if (port2) ptr_addr->port = port2; - return true; + return TRUE; } else { - return false; + return FALSE; } } } - return true; + return TRUE; } -bool _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR* pbuffer) +BOOLEAN _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR* pbuffer) { if (af != AF_INET && af != AF_INET6) - return false; + return FALSE; - bool result = false; + BOOLEAN result = FALSE; - LPWSTR pstraddr = nullptr; + LPWSTR pstraddr = NULL; if (_app_formataddress (af, 0, paddr, 0, &pstraddr, FMTADDR_AS_ARPA)) { - const size_t arpa_hash = _r_str_hash (pstraddr); - const bool is_exists = cache_arpa.find (arpa_hash) != cache_arpa.end (); + SIZE_T arpa_hash = _r_str_hash (pstraddr); + BOOLEAN is_exists = cache_arpa.find (arpa_hash) != cache_arpa.end (); if (is_exists) { - PR_OBJECT ptr_cache_object = _r_obj_reference (cache_arpa[arpa_hash]); + PR_OBJECT ptr_cache_object = _r_obj2_reference (cache_arpa[arpa_hash]); if (ptr_cache_object) { if (ptr_cache_object->pdata) result = _r_str_alloc (pbuffer, _r_str_length ((LPCWSTR)ptr_cache_object->pdata), (LPCWSTR)ptr_cache_object->pdata); - _r_obj_dereference (ptr_cache_object); + _r_obj2_dereference (ptr_cache_object); } } else { - cache_arpa[arpa_hash] = nullptr; + cache_arpa[arpa_hash] = NULL; - PDNS_RECORD ppQueryResultsSet = nullptr; - const DNS_STATUS dnsStatus = DnsQuery (pstraddr, DNS_TYPE_PTR, DNS_QUERY_NO_HOSTS_FILE, nullptr, &ppQueryResultsSet, nullptr); + PDNS_RECORD ppQueryResultsSet = NULL; + DNS_STATUS dnsStatus = DnsQuery (pstraddr, DNS_TYPE_PTR, DNS_QUERY_NO_HOSTS_FILE, NULL, &ppQueryResultsSet, NULL); if (dnsStatus == DNS_ERROR_RCODE_NO_ERROR) { if (ppQueryResultsSet) { - const size_t len = _r_str_length (ppQueryResultsSet->Data.PTR.pNameHost); + SIZE_T len = _r_str_length (ppQueryResultsSet->Data.PTR.pNameHost); result = _r_str_alloc (pbuffer, len, ppQueryResultsSet->Data.PTR.pNameHost); if (result) { - LPWSTR ptr_cache = nullptr; + LPWSTR ptr_cache = NULL; if (_r_str_alloc (&ptr_cache, len, ppQueryResultsSet->Data.PTR.pNameHost)) { _app_freeobjects_map (cache_arpa, MAP_CACHE_MAX); - cache_arpa[arpa_hash] = _r_obj_allocate (ptr_cache, &_app_dereferencestring); + cache_arpa[arpa_hash] = _r_obj2_allocate (ptr_cache); } } } @@ -2730,12 +2738,12 @@ bool _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR* pbuffer) } } - SAFE_DELETE_ARRAY (pstraddr); + SAFE_DELETE_MEMORY (pstraddr); return result; } -INT _app_getlistview_id (EnumDataType type) +INT _app_getlistview_id (ENUM_TYPE_DATA type) { if (type == DataAppRegular || type == DataAppDevice || type == DataAppNetwork || type == DataAppPico) return IDC_APPS_PROFILE; @@ -2761,15 +2769,15 @@ INT _app_getlistview_id (EnumDataType type) HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size) { if (!hicon) - return nullptr; + return NULL; RECT iconRectangle = {0}; iconRectangle.right = icon_size; iconRectangle.bottom = icon_size; - HBITMAP hbitmap = nullptr; - const HDC screenHdc = GetDC (nullptr); + HBITMAP hbitmap = NULL; + HDC screenHdc = GetDC (NULL); if (screenHdc) { @@ -2786,11 +2794,11 @@ HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size) bitmapInfo.bmiHeader.biHeight = icon_size; bitmapInfo.bmiHeader.biBitCount = 32; - hbitmap = CreateDIBSection (hdc, &bitmapInfo, DIB_RGB_COLORS, nullptr, nullptr, 0); + hbitmap = CreateDIBSection (hdc, &bitmapInfo, DIB_RGB_COLORS, NULL, NULL, 0); if (hbitmap) { - const HGDIOBJ oldBitmap = SelectObject (hdc, hbitmap); + HGDIOBJ oldBitmap = SelectObject (hdc, hbitmap); BLENDFUNCTION blendFunction = {0}; blendFunction.BlendOp = AC_SRC_OVER; @@ -2802,19 +2810,19 @@ HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size) paintParams.dwFlags = BPPF_ERASE; paintParams.pBlendFunction = &blendFunction; - HDC bufferHdc = nullptr; + HDC bufferHdc = NULL; - const HPAINTBUFFER paintBuffer = BeginBufferedPaint (hdc, &iconRectangle, BPBF_DIB, &paintParams, &bufferHdc); + HPAINTBUFFER paintBuffer = BeginBufferedPaint (hdc, &iconRectangle, BPBF_DIB, &paintParams, &bufferHdc); if (paintBuffer) { - DrawIconEx (bufferHdc, 0, 0, hicon, icon_size, icon_size, 0, nullptr, DI_NORMAL); + DrawIconEx (bufferHdc, 0, 0, hicon, icon_size, icon_size, 0, NULL, DI_NORMAL); EndBufferedPaint (paintBuffer, TRUE); } else { _r_dc_fillrect (hdc, &iconRectangle, GetSysColor (COLOR_MENU)); - DrawIconEx (hdc, 0, 0, hicon, icon_size, icon_size, 0, nullptr, DI_NORMAL); + DrawIconEx (hdc, 0, 0, hicon, icon_size, icon_size, 0, NULL, DI_NORMAL); } SelectObject (hdc, oldBitmap); @@ -2823,7 +2831,7 @@ HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size) SAFE_DELETE_DC (hdc); } - ReleaseDC (nullptr, screenHdc); + ReleaseDC (NULL, screenHdc); } return hbitmap; @@ -2831,26 +2839,26 @@ HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size) HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) { - bool success = false; + BOOLEAN success = FALSE; UINT frameCount = 0; ULONG resourceLength = 0; - HDC screenHdc = nullptr; - HDC hdc = nullptr; + HDC screenHdc = NULL; + HDC hdc = NULL; BITMAPINFO bi = {0}; - HBITMAP hbitmap = nullptr; - PVOID bitmapBuffer = nullptr; - IWICStream* wicStream = nullptr; - IWICBitmapSource* wicBitmapSource = nullptr; - IWICBitmapDecoder* wicDecoder = nullptr; - IWICBitmapFrameDecode* wicFrame = nullptr; - IWICImagingFactory* wicFactory = nullptr; - IWICBitmapScaler* wicScaler = nullptr; + HBITMAP hbitmap = NULL; + PVOID bitmapBuffer = NULL; + IWICStream* wicStream = NULL; + IWICBitmapSource* wicBitmapSource = NULL; + IWICBitmapDecoder* wicDecoder = NULL; + IWICBitmapFrameDecode* wicFrame = NULL; + IWICImagingFactory* wicFactory = NULL; + IWICBitmapScaler* wicScaler = NULL; WICPixelFormatGUID pixelFormat; WICRect rect = {0, 0, icon_size, icon_size}; // Create the ImagingFactory - if (FAILED (CoCreateInstance (CLSID_WICImagingFactory1, nullptr, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID*)&wicFactory))) + if (FAILED (CoCreateInstance (CLSID_WICImagingFactory1, NULL, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID*)&wicFactory))) goto DoExit; // Load the resource @@ -2867,7 +2875,7 @@ HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) if (FAILED (wicStream->InitializeFromMemory (resourceBuffer, resourceLength))) goto DoExit; - if (FAILED (wicFactory->CreateDecoder (GUID_ContainerFormatPng, nullptr, &wicDecoder))) + if (FAILED (wicFactory->CreateDecoder (GUID_ContainerFormatPng, NULL, &wicDecoder))) goto DoExit; if (FAILED (wicDecoder->Initialize ((IStream*)wicStream, WICDecodeMetadataCacheOnLoad))) @@ -2892,7 +2900,7 @@ HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) } else { - IWICFormatConverter* wicFormatConverter = nullptr; + IWICFormatConverter* wicFormatConverter = NULL; if (FAILED (wicFactory->CreateFormatConverter (&wicFormatConverter))) goto DoExit; @@ -2901,7 +2909,7 @@ HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) (IWICBitmapSource*)wicFrame, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, - nullptr, + NULL, 0.0, WICBitmapPaletteTypeCustom ))) @@ -2927,9 +2935,9 @@ HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) bi.bmiHeader.biBitCount = 32; bi.bmiHeader.biCompression = BI_RGB; - screenHdc = GetDC (nullptr); + screenHdc = GetDC (NULL); hdc = CreateCompatibleDC (screenHdc); - hbitmap = CreateDIBSection (screenHdc, &bi, DIB_RGB_COLORS, &bitmapBuffer, nullptr, 0); + hbitmap = CreateDIBSection (screenHdc, &bi, DIB_RGB_COLORS, &bitmapBuffer, NULL, 0); if (FAILED (wicFactory->CreateBitmapScaler (&wicScaler))) goto DoExit; @@ -2937,10 +2945,10 @@ HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size) if (FAILED (wicScaler->Initialize (wicBitmapSource, rect.Width, rect.Height, WICBitmapInterpolationModeFant))) goto DoExit; - if (FAILED (wicScaler->CopyPixels (&rect, rect.Width * 4, rect.Width * rect.Height * 4, (PBYTE)bitmapBuffer))) + if (FAILED (wicScaler->CopyPixels (&rect, rect.Width * 4, rect.Width * rect.Height * 4, (LPBYTE)bitmapBuffer))) goto DoExit; - success = true; + success = TRUE; DoExit: @@ -2950,7 +2958,7 @@ DoExit: SAFE_DELETE_DC (hdc); if (screenHdc) - ReleaseDC (nullptr, screenHdc); + ReleaseDC (NULL, screenHdc); if (wicBitmapSource) wicBitmapSource->Release (); @@ -2968,15 +2976,15 @@ DoExit: { SAFE_DELETE_OBJECT (hbitmap); - return nullptr; + return NULL; } return hbitmap; } -void _app_load_appxmanifest (PITEM_APP_HELPER ptr_app_item) +VOID _app_load_appxmanifest (PITEM_APP_HELPER ptr_app_item) { - if (!ptr_app_item || _r_str_isempty (ptr_app_item->real_path)) + if (_r_str_isempty (ptr_app_item->real_path)) return; rstring result; @@ -2987,9 +2995,9 @@ void _app_load_appxmanifest (PITEM_APP_HELPER ptr_app_item) L"VSAppxManifest.xml", }; - for (auto &name : appx_names) + for (SIZE_T i = 0; i < RTL_NUMBER_OF (appx_names); i++) { - path.Format (L"%s\\%s", ptr_app_item->real_path, name); + path.Format (L"%s\\%s", ptr_app_item->real_path, appx_names[i]); if (_r_fs_exists (path)) goto DoOpen; diff --git a/src/helper.hpp b/src/helper.hpp index 33ed74bf..6ea8a372 100644 --- a/src/helper.hpp +++ b/src/helper.hpp @@ -8,52 +8,56 @@ #define FMTADDR_USE_PROTOCOL 0x000004 #define FMTADDR_RESOLVE_HOST 0x000008 -void _app_dereferenceapp (PVOID pdata); -void _app_dereferenceappshelper (PVOID pdata); -void _app_dereferencelog (PVOID pdata); -void _app_dereferencenetwork (PVOID pdata); -void _app_dereferencerule (PVOID pdata); -void _app_dereferenceruleconfig (PVOID pdata); -void _app_dereferencestring (PVOID pdata); +VOID NTAPI _app_dereferenceapp (PVOID pdata); +VOID NTAPI _app_dereferenceappshelper (PVOID pdata); +VOID NTAPI _app_dereferencelog (PVOID pdata); +VOID NTAPI _app_dereferencenetwork (PVOID pdata); +VOID NTAPI _app_dereferencerule (PVOID pdata); +VOID NTAPI _app_dereferenceruleconfig (PVOID pdata); -bool _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT16 port, LPWSTR* ptr_dest, DWORD flags); -rstring _app_formatport (UINT16 port, bool is_noempty); +BOOLEAN _app_formataddress (ADDRESS_FAMILY af, UINT8 proto, const PVOID paddr, UINT16 port, LPWSTR* ptr_dest, DWORD flags); +BOOLEAN _app_formatip (ADDRESS_FAMILY af, PVOID paddr, LPWSTR out_buffer, ULONG buffer_size); +rstring _app_formatport (UINT16 port, BOOLEAN is_noempty); -void _app_freeobjects_map (OBJECTS_MAP& ptr_map, size_t max_size); -void _app_freeobjects_vec (OBJECTS_VEC& ptr_vec); -void _app_freethreadpool (THREADS_VEC& ptr_vec); -void _app_freelogstack (); +VOID _app_freeobjects_map (OBJECTS_MAP& ptr_map, SIZE_T max_size); +VOID _app_freeappshelper_map (OBJECTS_APP_HELPER& ptr_map); +VOID _app_freerulesconfig_map (OBJECTS_RULE_CONFIG& ptr_map); +VOID _app_freeobjects_vec (OBJECTS_VEC& ptr_vec); +VOID _app_freelogobjects_vec (OBJECTS_LOG& ptr_vec); +VOID _app_freethreadpool (THREADS_VEC& ptr_vec); +VOID _app_freelogstack (); -void _app_getappicon (const PITEM_APP ptr_app, bool is_small, PINT picon_id, HICON* picon); -void _app_getdisplayname (size_t app_hash, PITEM_APP ptr_app, LPWSTR* extracted_name); -bool _app_getfileicon (LPCWSTR path, bool is_small, PINT picon_id, HICON* picon); -PR_OBJECT _app_getsignatureinfo (size_t app_hash, const PITEM_APP ptr_app); -PR_OBJECT _app_getversioninfo (size_t app_hash, const PITEM_APP ptr_app); +VOID _app_getappicon (const PITEM_APP ptr_app, BOOLEAN is_small, PINT picon_id, HICON* picon); +VOID _app_getdisplayname (SIZE_T app_hash, PITEM_APP ptr_app, LPWSTR* extracted_name); +BOOLEAN _app_getfileicon (LPCWSTR path, BOOLEAN is_small, PINT picon_id, HICON* picon); +PR_OBJECT _app_getsignatureinfo (SIZE_T app_hash, const PITEM_APP ptr_app); +PR_OBJECT _app_getversioninfo (SIZE_T app_hash, const PITEM_APP ptr_app); rstring _app_getservicename (UINT16 port, LPCWSTR empty_text); rstring _app_getprotoname (UINT8 proto, ADDRESS_FAMILY af); -rstring _app_getstatename (DWORD state); -COLORREF _app_getcolorvalue (size_t color_hash); +rstring _app_getstatename (DWORD state, LPCWSTR default_value); +rstring _app_getdirectionname (FWP_DIRECTION direction, BOOLEAN is_loopback); +rstring _app_getfiltername (LPCWSTR provider_name, LPCWSTR filter_name, LPCWSTR default_value); +COLORREF _app_getcolorvalue (SIZE_T color_hash); -void _app_generate_connections (OBJECTS_MAP& ptr_map, HASHER_MAP& checker_map); -void _app_generate_packages (); -void _app_generate_services (); +VOID _app_generate_connections (OBJECTS_NETWORK& ptr_map, HASHER_MAP& checker_map); +VOID _app_generate_packages (); +VOID _app_generate_services (); -void _app_generate_rulesmenu (HMENU hsubmenu, size_t app_hash); -void _app_generate_timermenu (HMENU hsubmenu, size_t app_hash); +VOID _app_generate_rulesmenu (HMENU hsubmenu, SIZE_T app_hash); +VOID _app_generate_timermenu (HMENU hsubmenu, SIZE_T app_hash); -bool _app_item_get (EnumDataType type, size_t app_hash, rstring* display_name, rstring* real_path, time_t* ptime, void** lpdata); +BOOLEAN _app_item_get (ENUM_TYPE_DATA type, SIZE_T app_hash, rstring* display_name, rstring* real_path, time_t* ptime, LPVOID* lpdata); rstring _app_parsehostaddress_dns (LPCWSTR hostname, USHORT port); -//rstring _app_parsehostaddress_wsa (LPCWSTR hostname, USHORT port); -bool _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT* format_ptr, PUSHORT port_ptr, FWP_V4_ADDR_AND_MASK* paddr4, FWP_V6_ADDR_AND_MASK* paddr6, LPWSTR paddr_dns, size_t dns_length); -bool _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr); +BOOLEAN _app_parsenetworkstring (LPCWSTR network_string, NET_ADDRESS_FORMAT* format_ptr, PUSHORT port_ptr, FWP_V4_ADDR_AND_MASK* paddr4, FWP_V6_ADDR_AND_MASK* paddr6, LPWSTR paddr_dns, SIZE_T dns_length); +BOOLEAN _app_parserulestring (rstring rule, PITEM_ADDRESS ptr_addr); -bool _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR* pbuffer); +BOOLEAN _app_resolveaddress (ADDRESS_FAMILY af, LPVOID paddr, LPWSTR* pbuffer); -INT _app_getlistview_id (EnumDataType type); +INT _app_getlistview_id (ENUM_TYPE_DATA type); HBITMAP _app_bitmapfromico (HICON hicon, INT icon_size); HBITMAP _app_bitmapfrompng (HINSTANCE hinst, LPCWSTR name, INT icon_size); -void _app_load_appxmanifest (PITEM_APP_HELPER ptr_app_item); +VOID _app_load_appxmanifest (PITEM_APP_HELPER ptr_app_item); diff --git a/src/log.cpp b/src/log.cpp index 7a411315..88f8d94a 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -5,7 +5,7 @@ rstring _app_getlogviewer () { - rstring result = app.ConfigGet (L"LogViewer", LOG_VIEWER_DEFAULT); + rstring result = app.ConfigGetString (L"LogViewer", LOG_VIEWER_DEFAULT); if (result.IsEmpty ()) return _r_path_expand (LOG_VIEWER_DEFAULT); @@ -13,52 +13,40 @@ rstring _app_getlogviewer () return _r_path_expand (result); } -void _app_loginit (bool is_install) +VOID _app_loginit (BOOLEAN is_install) { // dropped packets logging (win7+) if (!config.hnetevent) return; - // reset all handles + // reset log handle SAFE_DELETE_HANDLE (config.hlogfile); - if (!is_install || !app.ConfigGet (L"IsLogEnabled", false).AsBool ()) + if (!is_install || !app.ConfigGetBoolean (L"IsLogEnabled", FALSE)) return; // already closed or not enabled - const rstring path = _r_path_expand (app.ConfigGet (L"LogPath", LOG_PATH_DEFAULT)); + rstring path = _r_path_expand (app.ConfigGetString (L"LogPath", LOG_PATH_DEFAULT)); - config.hlogfile = CreateFile (path, GENERIC_WRITE, FILE_SHARE_READ, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); + config.hlogfile = CreateFile (path, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (!_r_fs_isvalidhandle (config.hlogfile)) - { - app.LogError (L"CreateFile", GetLastError (), path, 0); - } - else - { - if (GetLastError () != ERROR_ALREADY_EXISTS) - { - DWORD written = 0; - const BYTE bom[] = {0xFF, 0xFE}; - - WriteFile (config.hlogfile, bom, sizeof (bom), &written, nullptr); // write utf-16 le byte order mask - - WriteFile (config.hlogfile, SZ_LOG_TITLE, DWORD (_r_str_length (SZ_LOG_TITLE) * sizeof (WCHAR)), &written, nullptr); // adds csv header - } - else - { - if (_app_logchecklimit ()) - _app_logclear (); - - _r_fs_setpos (config.hlogfile, 0, FILE_END); - } - } -} - -void _app_logwrite (PITEM_LOG ptr_log) -{ if (!_r_fs_isvalidhandle (config.hlogfile)) return; + if (GetLastError () != ERROR_ALREADY_EXISTS) + { + DWORD written = 0; + BYTE bom[] = {0xFF, 0xFE}; + + WriteFile (config.hlogfile, bom, sizeof (bom), &written, NULL); // write utf-16 le byte order mask + } + else + { + _r_fs_setpos (config.hlogfile, 0, FILE_END); + } +} + +VOID _app_logwrite (PITEM_LOG ptr_log) +{ // parse path rstring path; { @@ -84,137 +72,111 @@ void _app_logwrite (PITEM_LOG ptr_log) } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } - // parse filter name - rstring filter_name; - { - if (!_r_str_isempty (ptr_log->provider_name) && !_r_str_isempty (ptr_log->filter_name)) - filter_name.Format (L"%s\\%s", ptr_log->provider_name, ptr_log->filter_name); - - else if (!_r_str_isempty (ptr_log->filter_name)) - filter_name = ptr_log->filter_name; - } - - // parse direction - rstring direction; - { - if (ptr_log->direction == FWP_DIRECTION_INBOUND) - direction = SZ_DIRECTION_IN; - - else if (ptr_log->direction == FWP_DIRECTION_OUTBOUND) - direction = SZ_DIRECTION_OUT; - - if (ptr_log->is_loopback) - direction.Append (SZ_DIRECTION_LOOPBACK); - } - - LPWSTR local_fmt = nullptr; - LPWSTR remote_fmt = nullptr; + LPWSTR local_fmt = NULL; + LPWSTR remote_fmt = NULL; _app_formataddress (ptr_log->af, 0, &ptr_log->local_addr, 0, &local_fmt, FMTADDR_RESOLVE_HOST); _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, 0, &remote_fmt, FMTADDR_RESOLVE_HOST); rstring buffer; buffer.Format (SZ_LOG_BODY, - _r_fmt_date (ptr_log->timestamp, FDTF_SHORTDATE | FDTF_LONGTIME).GetString (), + _r_fmt_dateex (ptr_log->timestamp, FDTF_SHORTDATE | FDTF_LONGTIME).GetString (), !_r_str_isempty (ptr_log->username) ? ptr_log->username : SZ_EMPTY, !path.IsEmpty () ? path.GetString () : SZ_EMPTY, !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY, - ptr_log->local_port ? _app_formatport (ptr_log->local_port, true).GetString () : SZ_EMPTY, + ptr_log->local_port ? _app_formatport (ptr_log->local_port, TRUE).GetString () : SZ_EMPTY, !_r_str_isempty (remote_fmt) ? remote_fmt : SZ_EMPTY, - ptr_log->remote_port ? _app_formatport (ptr_log->remote_port, true).GetString () : SZ_EMPTY, + ptr_log->remote_port ? _app_formatport (ptr_log->remote_port, TRUE).GetString () : SZ_EMPTY, _app_getprotoname (ptr_log->protocol, ptr_log->af).GetString (), - !filter_name.IsEmpty () ? filter_name.GetString () : SZ_EMPTY, + _app_getfiltername (ptr_log->provider_name, ptr_log->filter_name, SZ_EMPTY).GetString (), ptr_log->filter_id, - !direction.IsEmpty () ? direction.GetString () : SZ_EMPTY, + _app_getdirectionname (ptr_log->direction, ptr_log->is_loopback).GetString (), (ptr_log->is_allow ? SZ_STATE_ALLOW : SZ_STATE_BLOCK) ); - SAFE_DELETE_ARRAY (local_fmt); - SAFE_DELETE_ARRAY (remote_fmt); + SAFE_DELETE_MEMORY (local_fmt); + SAFE_DELETE_MEMORY (remote_fmt); - if (_app_logchecklimit ()) + if (_app_logislimitreached ()) _app_logclear (); DWORD written = 0; - WriteFile (config.hlogfile, buffer.GetString (), DWORD (buffer.GetLength () * sizeof (WCHAR)), &written, nullptr); + + if (_r_fs_size (config.hlogfile) == 2) + WriteFile (config.hlogfile, SZ_LOG_TITLE, (DWORD)(_r_str_length (SZ_LOG_TITLE) * sizeof (WCHAR)), &written, NULL); // adds csv header + + WriteFile (config.hlogfile, buffer.GetString (), (DWORD)(buffer.GetLength () * sizeof (WCHAR)), &written, NULL); } -bool _app_logisexists (HWND hwnd, PITEM_LOG ptr_log_new) +BOOLEAN _app_logisexists (HWND hwnd, PITEM_LOG ptr_log_new) { - bool is_hitcount = false; + BOOLEAN is_duplicate_found = FALSE; for (auto &p : log_arr) { - PR_OBJECT ptr_log_object = _r_obj_reference (p); + PITEM_LOG ptr_log = (PITEM_LOG)_r_obj_reference (p); - if (!ptr_log_object) + if (!ptr_log) continue; - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - - if (ptr_log) + if ( + ptr_log->is_allow == ptr_log_new->is_allow && + ptr_log->af == ptr_log_new->af && + ptr_log->direction == ptr_log_new->direction && + ptr_log->protocol == ptr_log_new->protocol && + ptr_log->remote_port == ptr_log_new->remote_port && + ptr_log->local_port == ptr_log_new->local_port + ) { - if ( - ptr_log->is_allow == ptr_log_new->is_allow && - ptr_log->af == ptr_log_new->af && - ptr_log->direction == ptr_log_new->direction && - ptr_log->protocol == ptr_log_new->protocol && - ptr_log->remote_port == ptr_log_new->remote_port && - ptr_log->local_port == ptr_log_new->local_port - ) + if (ptr_log->af == AF_INET) { - if (ptr_log->af == AF_INET) + if ( + ptr_log->remote_addr.S_un.S_addr == ptr_log_new->remote_addr.S_un.S_addr && + ptr_log->local_addr.S_un.S_addr == ptr_log_new->local_addr.S_un.S_addr + ) { - if ( - ptr_log->remote_addr.S_un.S_addr == ptr_log_new->remote_addr.S_un.S_addr && - ptr_log->local_addr.S_un.S_addr == ptr_log_new->local_addr.S_un.S_addr - ) - { - is_hitcount = true; - } + is_duplicate_found = TRUE; } - else if (ptr_log->af == AF_INET6) + } + else if (ptr_log->af == AF_INET6) + { + if ( + RtlEqualMemory (ptr_log->remote_addr6.u.Byte, ptr_log_new->remote_addr6.u.Byte, FWP_V6_ADDR_SIZE) && + RtlEqualMemory (ptr_log->local_addr6.u.Byte, ptr_log_new->local_addr6.u.Byte, FWP_V6_ADDR_SIZE) + ) { - if ( - RtlEqualMemory (ptr_log->remote_addr6.u.Byte, ptr_log_new->remote_addr6.u.Byte, FWP_V6_ADDR_SIZE) && - RtlEqualMemory (ptr_log->local_addr6.u.Byte, ptr_log_new->local_addr6.u.Byte, FWP_V6_ADDR_SIZE) - ) - { - is_hitcount = true; - } + is_duplicate_found = TRUE; } + } - if (is_hitcount) - { - ptr_log_new->timestamp = ptr_log->timestamp; // upd date - _r_obj_dereference (ptr_log_object); + if (is_duplicate_found) + { + ptr_log_new->timestamp = ptr_log->timestamp; // upd date + _r_obj_dereference (ptr_log); - break; - } + return TRUE; } } - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } - return is_hitcount; + return FALSE; } -void _app_logwrite_ui (HWND hwnd, PR_OBJECT ptr_log_object) +VOID _app_logwrite_ui (HWND hwnd, PITEM_LOG ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - if (_app_logisexists (hwnd, ptr_log)) return; - const INT log_listview_id = IDC_LOG; + INT log_listview_id = IDC_LOG; - size_t index = log_arr.size (); - log_arr.push_back (_r_obj_reference (ptr_log_object)); + SIZE_T index = log_arr.size (); + log_arr.push_back ((PITEM_LOG)_r_obj_reference (ptr_log)); INT icon_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoIconId); @@ -226,13 +188,13 @@ void _app_logwrite_ui (HWND hwnd, PR_OBJECT ptr_log_object) if (_r_str_isempty (display_name)) display_name = ptr_log->path; - LPWSTR local_fmt = nullptr; - LPWSTR remote_fmt = nullptr; + LPWSTR local_fmt = NULL; + LPWSTR remote_fmt = NULL; _app_formataddress (ptr_log->af, 0, &ptr_log->local_addr, 0, &local_fmt, 0); _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, 0, &remote_fmt, 0); - const INT item_id = _r_listview_getitemcount (hwnd, log_listview_id); + INT item_id = _r_listview_getitemcount (hwnd, log_listview_id, FALSE); _r_listview_additem (hwnd, log_listview_id, item_id, 0, !_r_str_isempty (display_name) ? display_name : SZ_EMPTY, icon_id, I_GROUPIDNONE, index); _r_listview_setitem (hwnd, log_listview_id, item_id, 1, !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY); @@ -240,49 +202,36 @@ void _app_logwrite_ui (HWND hwnd, PR_OBJECT ptr_log_object) _r_listview_setitem (hwnd, log_listview_id, item_id, 5, _app_getprotoname (ptr_log->protocol, ptr_log->af)); if (ptr_log->local_port) - _r_listview_setitem (hwnd, log_listview_id, item_id, 2, _app_formatport (ptr_log->local_port, true)); + _r_listview_setitem (hwnd, log_listview_id, item_id, 2, _app_formatport (ptr_log->local_port, TRUE)); if (ptr_log->remote_port) - _r_listview_setitem (hwnd, log_listview_id, item_id, 4, _app_formatport (ptr_log->remote_port, true)); + _r_listview_setitem (hwnd, log_listview_id, item_id, 4, _app_formatport (ptr_log->remote_port, TRUE)); - { - rstring direction; + _r_listview_setitem (hwnd, log_listview_id, item_id, 6, _app_getfiltername (NULL, ptr_log->filter_name, SZ_EMPTY)); + _r_listview_setitem (hwnd, log_listview_id, item_id, 7, _app_getdirectionname (ptr_log->direction, ptr_log->is_loopback)); + _r_listview_setitem (hwnd, log_listview_id, item_id, 8, ptr_log->is_allow ? SZ_STATE_ALLOW : SZ_STATE_BLOCK); - if (ptr_log->direction == FWP_DIRECTION_INBOUND) - direction = SZ_DIRECTION_IN; - - else if (ptr_log->direction == FWP_DIRECTION_OUTBOUND) - direction = SZ_DIRECTION_OUT; - - if (ptr_log->is_loopback) - direction.Append (SZ_DIRECTION_LOOPBACK); - - _r_listview_setitem (hwnd, log_listview_id, item_id, 6, direction); - } - - _r_listview_setitem (hwnd, log_listview_id, item_id, 7, ptr_log->is_allow ? SZ_STATE_ALLOW : SZ_STATE_BLOCK); - - SAFE_DELETE_ARRAY (local_fmt); - SAFE_DELETE_ARRAY (remote_fmt); + SAFE_DELETE_MEMORY (local_fmt); + SAFE_DELETE_MEMORY (remote_fmt); if (log_listview_id == (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) { - _app_listviewresize (hwnd, log_listview_id, false); - _app_listviewsort (hwnd, log_listview_id); + _app_listviewresize (hwnd, log_listview_id, FALSE); + _app_listviewsort (hwnd, log_listview_id, INVALID_INT, FALSE); } } -bool _app_logchecklimit () +BOOLEAN _app_logislimitreached () { - const DWORD limit = app.ConfigGet (L"LogSizeLimitKb", LOG_SIZE_LIMIT_DEFAULT).AsUlong (); + DWORD limit = app.ConfigGetUlong (L"LogSizeLimitKb", LOG_SIZE_LIMIT_DEFAULT); if (!limit || !_r_fs_isvalidhandle (config.hlogfile)) - return false; + return FALSE; return (_r_fs_size (config.hlogfile) >= (limit * _R_BYTESIZE_KB)); } -void _app_logclear () +VOID _app_logclear () { if (_r_fs_isvalidhandle (config.hlogfile)) { @@ -290,47 +239,44 @@ void _app_logclear () SetEndOfFile (config.hlogfile); - DWORD written = 0; - WriteFile (config.hlogfile, SZ_LOG_TITLE, DWORD (_r_str_length (SZ_LOG_TITLE) * sizeof (WCHAR)), &written, nullptr); // adds csv header - FlushFileBuffers (config.hlogfile); } else { - const rstring path = _r_path_expand (app.ConfigGet (L"LogPath", LOG_PATH_DEFAULT)); + rstring path = _r_path_expand (app.ConfigGetString (L"LogPath", LOG_PATH_DEFAULT)); - _r_fs_remove (path, RFS_FORCEREMOVE); - _r_fs_remove (_r_fmt (L"%s.bak", path.GetString ()), RFS_FORCEREMOVE); + _r_fs_remove (path, _R_FLAG_REMOVE_FORCE); + _r_fs_remove (_r_fmt (L"%s.bak", path.GetString ()), _R_FLAG_REMOVE_FORCE); } } -void _app_logclear_ui (HWND hwnd) +VOID _app_logclear_ui (HWND hwnd) { SendDlgItemMessage (hwnd, IDC_LOG, LVM_DELETEALLITEMS, 0, 0); //SendDlgItemMessage (hwnd, IDC_LOG, LVM_SETITEMCOUNT, 0, 0); - _app_freeobjects_vec (log_arr); + _app_freelogobjects_vec (log_arr); if (IsWindowVisible (GetDlgItem (hwnd, IDC_LOG))) - _app_listviewresize (hwnd, IDC_LOG, false); + _app_listviewresize (hwnd, IDC_LOG, FALSE); //SendDlgItemMessage (hwnd, IDC_LOG, LVM_SETITEMCOUNT, (WPARAM)log_arr.size (), LVSICF_NOSCROLL); } -void _wfp_logsubscribe (HANDLE hengine) +VOID _wfp_logsubscribe (HANDLE hengine) { if (config.hnetevent) return; // already subscribed - HMODULE hlib = LoadLibraryEx (L"fwpuclnt.dll", nullptr, LOAD_LIBRARY_SEARCH_USER_DIRS | LOAD_LIBRARY_SEARCH_SYSTEM32); + HMODULE hlib = LoadLibraryEx (L"fwpuclnt.dll", NULL, LOAD_LIBRARY_SEARCH_USER_DIRS | LOAD_LIBRARY_SEARCH_SYSTEM32); if (hlib) { - using FWPMNES4 = decltype (&FwpmNetEventSubscribe4); // win10rs5+ - using FWPMNES3 = decltype (&FwpmNetEventSubscribe3); // win10rs4+ - using FWPMNES2 = decltype (&FwpmNetEventSubscribe2); // win10rs1+ - using FWPMNES1 = decltype (&FwpmNetEventSubscribe1); // win8+ - using FWPMNES0 = decltype (&FwpmNetEventSubscribe0); // win7+ + typedef DWORD (WINAPI *FWPMNES4)(HANDLE engineHandle, const FWPM_NET_EVENT_SUBSCRIPTION0* subscription, FWPM_NET_EVENT_CALLBACK4 callback, void* context, HANDLE* eventsHandle); // win10rs5+ + typedef DWORD (WINAPI *FWPMNES3)(HANDLE engineHandle, const FWPM_NET_EVENT_SUBSCRIPTION0* subscription, FWPM_NET_EVENT_CALLBACK3 callback, void* context, HANDLE* eventsHandle); // win10rs4+ + typedef DWORD (WINAPI *FWPMNES2)(HANDLE engineHandle, const FWPM_NET_EVENT_SUBSCRIPTION0* subscription, FWPM_NET_EVENT_CALLBACK2 callback, void* context, HANDLE* eventsHandle); // win10rs1+ + typedef DWORD (WINAPI *FWPMNES1)(HANDLE engineHandle, const FWPM_NET_EVENT_SUBSCRIPTION0* subscription, FWPM_NET_EVENT_CALLBACK1 callback, void* context, HANDLE* eventsHandle); // win8+ + typedef DWORD (WINAPI *FWPMNES0)(HANDLE engineHandle, const FWPM_NET_EVENT_SUBSCRIPTION0* subscription, FWPM_NET_EVENT_CALLBACK0 callback, void* context, HANDLE* eventsHandle); // win7+ const FWPMNES4 _FwpmNetEventSubscribe4 = (FWPMNES4)GetProcAddress (hlib, "FwpmNetEventSubscribe4"); const FWPMNES3 _FwpmNetEventSubscribe3 = (FWPMNES3)GetProcAddress (hlib, "FwpmNetEventSubscribe3"); @@ -346,37 +292,37 @@ void _wfp_logsubscribe (HANDLE hengine) RtlSecureZeroMemory (&subscription, sizeof (subscription)); RtlSecureZeroMemory (&enum_template, sizeof (enum_template)); - enum_template.numFilterConditions = 0; // get events for all conditions + //enum_template.numFilterConditions = 0; // get events for all conditions subscription.enumTemplate = &enum_template; DWORD code; if (_FwpmNetEventSubscribe4) - code = _FwpmNetEventSubscribe4 (hengine, &subscription, &_wfp_logcallback4, nullptr, &config.hnetevent); // win10rs5+ + code = _FwpmNetEventSubscribe4 (hengine, &subscription, &_wfp_logcallback4, NULL, &config.hnetevent); // win10rs5+ else if (_FwpmNetEventSubscribe3) - code = _FwpmNetEventSubscribe3 (hengine, &subscription, &_wfp_logcallback3, nullptr, &config.hnetevent); // win10rs4+ + code = _FwpmNetEventSubscribe3 (hengine, &subscription, &_wfp_logcallback3, NULL, &config.hnetevent); // win10rs4+ else if (_FwpmNetEventSubscribe2) - code = _FwpmNetEventSubscribe2 (hengine, &subscription, &_wfp_logcallback2, nullptr, &config.hnetevent); // win10rs1+ + code = _FwpmNetEventSubscribe2 (hengine, &subscription, &_wfp_logcallback2, NULL, &config.hnetevent); // win10rs1+ else if (_FwpmNetEventSubscribe1) - code = _FwpmNetEventSubscribe1 (hengine, &subscription, &_wfp_logcallback1, nullptr, &config.hnetevent); // win8+ + code = _FwpmNetEventSubscribe1 (hengine, &subscription, &_wfp_logcallback1, NULL, &config.hnetevent); // win8+ else if (_FwpmNetEventSubscribe0) - code = _FwpmNetEventSubscribe0 (hengine, &subscription, &_wfp_logcallback0, nullptr, &config.hnetevent); // win7+ + code = _FwpmNetEventSubscribe0 (hengine, &subscription, &_wfp_logcallback0, NULL, &config.hnetevent); // win7+ else code = ERROR_INVALID_FUNCTION; if (code != ERROR_SUCCESS) { - app.LogError (L"FwpmNetEventSubscribe", code, nullptr, 0); + app.LogError (L"FwpmNetEventSubscribe", code, NULL, 0); } else { - _app_loginit (true); // create log file + _app_loginit (TRUE); // create log file } } @@ -384,24 +330,24 @@ void _wfp_logsubscribe (HANDLE hengine) } } -void _wfp_logunsubscribe (HANDLE hengine) +VOID _wfp_logunsubscribe (HANDLE hengine) { if (config.hnetevent) { - _app_loginit (false); // destroy log file handle if present + _app_loginit (FALSE); // destroy log file handle if present - const DWORD code = FwpmNetEventUnsubscribe (hengine, config.hnetevent); + DWORD code = FwpmNetEventUnsubscribe (hengine, config.hnetevent); if (code == ERROR_SUCCESS) - config.hnetevent = nullptr; + config.hnetevent = NULL; } } -void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* app_id, SID* package_id, SID* user_id, UINT8 proto, FWP_IP_VERSION ipver, UINT32 remote_addr4, FWP_BYTE_ARRAY16 const* remote_addr6, UINT16 remote_port, UINT32 local_addr4, FWP_BYTE_ARRAY16 const* local_addr6, UINT16 local_port, UINT16 layer_id, UINT64 filter_id, UINT32 direction, bool is_allow, bool is_loopback) +VOID CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* app_id, SID* package_id, SID* user_id, UINT8 proto, FWP_IP_VERSION ipver, UINT32 remote_addr4, FWP_BYTE_ARRAY16 const* remote_addr6, UINT16 remote_port, UINT32 local_addr4, FWP_BYTE_ARRAY16 const* local_addr6, UINT16 local_port, UINT16 layer_id, UINT64 filter_id, UINT32 direction, BOOLEAN is_allow, BOOLEAN is_loopback) { - const HANDLE hengine = _wfp_getenginehandle (); + HANDLE hengine = _wfp_getenginehandle (); - if (!filter_id || !layer_id || _wfp_isfiltersapplying () || (is_allow && app.ConfigGet (L"IsExcludeClassifyAllow", true).AsBool ())) + if (!hengine || !filter_id || !layer_id || _wfp_isfiltersapplying () || (is_allow && app.ConfigGetBoolean (L"IsExcludeClassifyAllow", TRUE))) return; // set allowed directions @@ -423,13 +369,13 @@ void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* // do not parse when tcp connection has been established, or when non-tcp traffic has been authorized { - FWPM_LAYER *layer = nullptr; + FWPM_LAYER *layer = NULL; if (FwpmLayerGetById (hengine, layer_id, &layer) == ERROR_SUCCESS && layer) { if (RtlEqualMemory (&layer->layerKey, &FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4, sizeof (GUID)) || RtlEqualMemory (&layer->layerKey, &FWPM_LAYER_ALE_FLOW_ESTABLISHED_V6, sizeof (GUID))) { - FwpmFreeMemory ((void **)&layer); + FwpmFreeMemory ((LPVOID*)&layer); return; } else if (RtlEqualMemory (&layer->layerKey, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, sizeof (GUID)) || RtlEqualMemory (&layer->layerKey, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, sizeof (GUID))) @@ -437,12 +383,12 @@ void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* direction = FWP_DIRECTION_INBOUND; // HACK!!! (issue #581) } - FwpmFreeMemory ((void**)&layer); + FwpmFreeMemory ((LPVOID*)&layer); } } // get filter information - bool is_myprovider = false; + BOOLEAN is_myprovider = FALSE; rstring filter_name; rstring provider_name; @@ -450,8 +396,8 @@ void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* UINT8 filter_weight = 0; { - FWPM_FILTER *ptr_filter = nullptr; - FWPM_PROVIDER *ptr_provider = nullptr; + FWPM_FILTER *ptr_filter = NULL; + FWPM_PROVIDER *ptr_provider = NULL; if (FwpmFilterGetById (hengine, filter_id, &ptr_filter) == ERROR_SUCCESS && ptr_filter) { @@ -463,7 +409,7 @@ void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* if (ptr_filter->providerKey) { if (RtlEqualMemory (ptr_filter->providerKey, &GUID_WfpProvider, sizeof (GUID))) - is_myprovider = true; + is_myprovider = TRUE; if (FwpmProviderGetByKey (hengine, ptr_filter->providerKey, &ptr_provider) == ERROR_SUCCESS && ptr_provider) provider_name = !_r_str_isempty (ptr_provider->displayData.name) ? ptr_provider->displayData.name : ptr_provider->displayData.description; @@ -471,251 +417,240 @@ void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* } if (ptr_filter) - FwpmFreeMemory ((void**)&ptr_filter); + FwpmFreeMemory ((LPVOID*)&ptr_filter); if (ptr_provider) - FwpmFreeMemory ((void**)&ptr_provider); + FwpmFreeMemory ((LPVOID*)&ptr_provider); // prevent filter "not found" items if (filter_name.IsEmpty () && provider_name.IsEmpty ()) return; } - PITEM_LIST_ENTRY ptr_entry = (PITEM_LIST_ENTRY)_aligned_malloc (sizeof (ITEM_LIST_ENTRY), MEMORY_ALLOCATION_ALIGNMENT); + PITEM_LOG_LISTENTRY ptr_entry = (PITEM_LOG_LISTENTRY)_aligned_malloc (sizeof (ITEM_LOG_LISTENTRY), MEMORY_ALLOCATION_ALIGNMENT); - if (ptr_entry) + if (!ptr_entry) + return; + + PITEM_LOG ptr_log = (PITEM_LOG)_r_obj_allocateex (sizeof (ITEM_LOG), &_app_dereferencelog); + + // get package id (win8+) + rstring sidstring; + + if ((flags & FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET) != 0 && package_id) { - PITEM_LOG ptr_log = new ITEM_LOG; + sidstring = _r_str_fromsid (package_id); - // get package id (win8+) - rstring sidstring; + if (sidstring.IsEmpty () || !_app_item_get (DataAppUWP, _r_str_hash (sidstring), NULL, NULL, NULL, NULL)) + sidstring.Release (); + } - if ((flags & FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET) != 0 && package_id) + // copy converted nt device path into win32 + if ((flags & FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET) != 0 && !sidstring.IsEmpty ()) + { + _r_str_alloc (&ptr_log->path, sidstring.GetLength (), sidstring); + ptr_log->app_hash = _r_str_hash (sidstring); + } + else if ((flags & FWPM_NET_EVENT_FLAG_APP_ID_SET) != 0 && app_id) + { + rstring path = _r_path_dospathfromnt ((LPCWSTR)app_id); + + if (!path.IsEmpty ()) { - sidstring = _r_str_fromsid (package_id); + _r_str_alloc (&ptr_log->path, path.GetLength (), path); + ptr_log->app_hash = _r_str_hash (path); + } + } + else + { + ptr_log->app_hash = 0; + } - if (sidstring.IsEmpty () || !_app_item_get (DataAppUWP, _r_str_hash (sidstring), nullptr, nullptr, nullptr, nullptr)) - sidstring.Release (); + // copy date and time + if (pft) + ptr_log->timestamp = _r_unixtime_from_filetime (pft); + + // get username information + if ((flags & FWPM_NET_EVENT_FLAG_USER_ID_SET) != 0 && user_id) + { + rstring userstring = _r_sys_getusernamefromsid (user_id); + + if (!userstring.IsEmpty ()) + _r_str_alloc (&ptr_log->username, userstring.GetLength (), userstring); + } + + // indicates the direction of the packet transmission + switch (direction) + { + case FWP_DIRECTION_IN: + case FWP_DIRECTION_INBOUND: + { + ptr_log->direction = FWP_DIRECTION_INBOUND; + break; } - // copy converted nt device path into win32 - if ((flags & FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET) != 0 && !sidstring.IsEmpty ()) + case FWP_DIRECTION_OUT: + case FWP_DIRECTION_OUTBOUND: { - _r_str_alloc (&ptr_log->path, sidstring.GetLength (), sidstring); - ptr_log->app_hash = _r_str_hash (sidstring); + ptr_log->direction = FWP_DIRECTION_OUTBOUND; + break; } - else if ((flags & FWPM_NET_EVENT_FLAG_APP_ID_SET) != 0 && app_id) - { - const rstring path = _r_path_dospathfromnt (LPCWSTR (app_id)); + } - if (!path.IsEmpty ()) - { - _r_str_alloc (&ptr_log->path, path.GetLength (), path); - ptr_log->app_hash = _r_str_hash (path); - } - } - else + // destination + if ((flags & FWPM_NET_EVENT_FLAG_IP_VERSION_SET) != 0) + { + if (ipver == FWP_IP_VERSION_V4) { - ptr_log->app_hash = 0; + ptr_log->af = AF_INET; + + // remote address + if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) != 0 && remote_addr4) + ptr_log->remote_addr.S_un.S_addr = _r_byteswap_ulong (remote_addr4); + + // local address + if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) != 0 && local_addr4) + ptr_log->local_addr.S_un.S_addr = _r_byteswap_ulong (local_addr4); + } + else if (ipver == FWP_IP_VERSION_V6) + { + ptr_log->af = AF_INET6; + + // remote address + if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) != 0 && remote_addr6) + RtlCopyMemory (ptr_log->remote_addr6.u.Byte, remote_addr6->byteArray16, FWP_V6_ADDR_SIZE); + + // local address + if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) != 0 && local_addr6) + RtlCopyMemory (ptr_log->local_addr6.u.Byte, local_addr6->byteArray16, FWP_V6_ADDR_SIZE); } - // copy date and time - if (pft) - ptr_log->timestamp = _r_unixtime_from_filetime (pft); + if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) != 0 && remote_port) + ptr_log->remote_port = remote_port; - // get username information - if ((flags & FWPM_NET_EVENT_FLAG_USER_ID_SET) != 0 && user_id) + if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET) != 0 && local_port) + ptr_log->local_port = local_port; + } + + // protocol + if ((flags & FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET) != 0) + ptr_log->protocol = proto; + + // indicates FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW state + ptr_log->is_allow = is_allow; + + // indicates whether the packet originated from (or was heading to) the loopback adapter + ptr_log->is_loopback = is_loopback; + + // set filter information + ptr_log->filter_id = filter_id; + + ptr_log->is_myprovider = is_myprovider; + + _r_str_alloc (&ptr_log->filter_name, filter_name.GetLength (), filter_name); + _r_str_alloc (&ptr_log->provider_name, provider_name.GetLength (), provider_name); + + ptr_log->is_blocklist = (filter_weight == FILTER_WEIGHT_BLOCKLIST); + ptr_log->is_system = (filter_weight == FILTER_WEIGHT_HIGHEST) || (filter_weight == FILTER_WEIGHT_HIGHEST_IMPORTANT); + ptr_log->is_custom = (filter_weight == FILTER_WEIGHT_CUSTOM) || (filter_weight == FILTER_WEIGHT_CUSTOM_BLOCK); + + // push into a slist + { + ptr_entry->Body = ptr_log; + + RtlInterlockedPushEntrySList (&log_stack.ListHead, &ptr_entry->ListEntry); + InterlockedIncrement (&log_stack.item_count); + + // check if thread has been terminated + LONG thread_count = InterlockedCompareExchange (&log_stack.thread_count, 0, 0); + + if (!thread_count || !_r_fastlock_islocked (&lock_logthread)) { - SID_NAME_USE sid_type; + _app_freethreadpool (threads_pool); - WCHAR username[MAX_PATH] = {0}; - WCHAR domain[MAX_PATH] = {0}; + HANDLE hthread = _r_sys_createthreadex (&LogThread, app.GetHWND (), TRUE, THREAD_PRIORITY_HIGHEST); - DWORD length1 = _countof (username); - DWORD length2 = _countof (domain); - - if (LookupAccountSid (nullptr, user_id, username, &length1, domain, &length2, &sid_type)) + if (hthread) { - rstring userstring; - userstring.Format (L"%s\\%s", domain, username); + InterlockedIncrement (&log_stack.thread_count); - _r_str_alloc (&ptr_log->username, userstring.GetLength (), userstring); - } - } + threads_pool.push_back (hthread); - // indicates the direction of the packet transmission - switch (direction) - { - case FWP_DIRECTION_IN: - case FWP_DIRECTION_INBOUND: - { - ptr_log->direction = FWP_DIRECTION_INBOUND; - break; - } - - case FWP_DIRECTION_OUT: - case FWP_DIRECTION_OUTBOUND: - { - ptr_log->direction = FWP_DIRECTION_OUTBOUND; - break; - } - } - - // destination - if ((flags & FWPM_NET_EVENT_FLAG_IP_VERSION_SET) != 0) - { - if (ipver == FWP_IP_VERSION_V4) - { - ptr_log->af = AF_INET; - - // remote address - if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) != 0 && remote_addr4) - ptr_log->remote_addr.S_un.S_addr = _byteswap_ulong (remote_addr4); - - // local address - if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) != 0 && local_addr4) - ptr_log->local_addr.S_un.S_addr = _byteswap_ulong (local_addr4); - } - else if (ipver == FWP_IP_VERSION_V6) - { - ptr_log->af = AF_INET6; - - // remote address - if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) != 0 && remote_addr6) - RtlCopyMemory (ptr_log->remote_addr6.u.Byte, remote_addr6->byteArray16, FWP_V6_ADDR_SIZE); - - // local address - if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) != 0 && local_addr6) - RtlCopyMemory (ptr_log->local_addr6.u.Byte, local_addr6->byteArray16, FWP_V6_ADDR_SIZE); - } - - if ((flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) != 0 && remote_port) - ptr_log->remote_port = remote_port; - - if ((flags & FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET) != 0 && local_port) - ptr_log->local_port = local_port; - } - - // protocol - if ((flags & FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET) != 0) - ptr_log->protocol = proto; - - // indicates FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW state - ptr_log->is_allow = is_allow; - - // indicates whether the packet originated from (or was heading to) the loopback adapter - ptr_log->is_loopback = is_loopback; - - // set filter information - ptr_log->filter_id = filter_id; - - ptr_log->is_myprovider = is_myprovider; - - _r_str_alloc (&ptr_log->filter_name, filter_name.GetLength (), filter_name); - _r_str_alloc (&ptr_log->provider_name, provider_name.GetLength (), provider_name); - - ptr_log->is_blocklist = (filter_weight == FILTER_WEIGHT_BLOCKLIST); - ptr_log->is_system = (filter_weight == FILTER_WEIGHT_HIGHEST) || (filter_weight == FILTER_WEIGHT_HIGHEST_IMPORTANT); - ptr_log->is_custom = (filter_weight == FILTER_WEIGHT_CUSTOM) || (filter_weight == FILTER_WEIGHT_CUSTOM_BLOCK); - - // push into a slist - { - ptr_entry->Body = _r_obj_allocate (ptr_log, &_app_dereferencelog); - - RtlInterlockedPushEntrySList (&log_stack.ListHead, &ptr_entry->ListEntry); - InterlockedIncrement (&log_stack.item_count); - - // check if thread has been terminated - const LONG thread_count = InterlockedCompareExchange (&log_stack.thread_count, 0, 0); - - if (!thread_count || !_r_fastlock_islocked (&lock_logthread)) - { - _app_freethreadpool (threads_pool); - - const HANDLE hthread = _r_sys_createthread (&LogThread, app.GetHWND (), true, THREAD_PRIORITY_HIGHEST); - - if (hthread) - { - InterlockedIncrement (&log_stack.thread_count); - - threads_pool.push_back (hthread); - - NtResumeThread (hthread, nullptr); - } + NtResumeThread (hthread, NULL); } } } } // win7+ callback -void CALLBACK _wfp_logcallback0 (LPVOID, const FWPM_NET_EVENT1* pEvent) +VOID CALLBACK _wfp_logcallback0 (LPVOID pContext, const FWPM_NET_EVENT1* pEvent) { UINT16 layer_id; UINT64 filter_id; UINT32 direction; - bool is_loopback; + BOOLEAN is_loopback; if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && pEvent->classifyDrop) { layer_id = pEvent->classifyDrop->layerId; filter_id = pEvent->classifyDrop->filterId; direction = pEvent->classifyDrop->msFwpDirection; - is_loopback = pEvent->classifyDrop->isLoopback; + is_loopback = !!pEvent->classifyDrop->isLoopback; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && pEvent->ipsecDrop) { layer_id = pEvent->ipsecDrop->layerId; filter_id = pEvent->ipsecDrop->filterId; direction = pEvent->ipsecDrop->direction; - is_loopback = false; + is_loopback = FALSE; } else { return; } - _wfp_logcallback (pEvent->header.flags, &pEvent->header.timeStamp, pEvent->header.appId.data, nullptr, pEvent->header.userId, pEvent->header.ipProtocol, pEvent->header.ipVersion, pEvent->header.remoteAddrV4, &pEvent->header.remoteAddrV6, pEvent->header.remotePort, pEvent->header.localAddrV4, &pEvent->header.localAddrV6, pEvent->header.localPort, layer_id, filter_id, direction, false, is_loopback); + _wfp_logcallback (pEvent->header.flags, &pEvent->header.timeStamp, pEvent->header.appId.data, NULL, pEvent->header.userId, pEvent->header.ipProtocol, pEvent->header.ipVersion, pEvent->header.remoteAddrV4, &pEvent->header.remoteAddrV6, pEvent->header.remotePort, pEvent->header.localAddrV4, &pEvent->header.localAddrV6, pEvent->header.localPort, layer_id, filter_id, direction, FALSE, is_loopback); } // win8+ callback -void CALLBACK _wfp_logcallback1 (LPVOID, const FWPM_NET_EVENT2* pEvent) +VOID CALLBACK _wfp_logcallback1 (LPVOID pContext, const FWPM_NET_EVENT2* pEvent) { UINT16 layer_id; UINT64 filter_id; UINT32 direction; - bool is_loopback; - bool is_allow = false; + BOOLEAN is_loopback; + BOOLEAN is_allow = FALSE; if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && pEvent->classifyDrop) { layer_id = pEvent->classifyDrop->layerId; filter_id = pEvent->classifyDrop->filterId; direction = pEvent->classifyDrop->msFwpDirection; - is_loopback = pEvent->classifyDrop->isLoopback; + is_loopback = !!pEvent->classifyDrop->isLoopback; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && pEvent->ipsecDrop) { layer_id = pEvent->ipsecDrop->layerId; filter_id = pEvent->ipsecDrop->filterId; direction = pEvent->ipsecDrop->direction; - is_loopback = false; + is_loopback = FALSE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW && pEvent->classifyAllow) { layer_id = pEvent->classifyAllow->layerId; filter_id = pEvent->classifyAllow->filterId; direction = pEvent->classifyAllow->msFwpDirection; - is_loopback = pEvent->classifyAllow->isLoopback; + is_loopback = !!pEvent->classifyAllow->isLoopback; - is_allow = true; + is_allow = TRUE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC && pEvent->classifyDropMac) { layer_id = pEvent->classifyDropMac->layerId; filter_id = pEvent->classifyDropMac->filterId; direction = pEvent->classifyDropMac->msFwpDirection; - is_loopback = pEvent->classifyDropMac->isLoopback; + is_loopback = !!pEvent->classifyDropMac->isLoopback; } else { @@ -726,44 +661,44 @@ void CALLBACK _wfp_logcallback1 (LPVOID, const FWPM_NET_EVENT2* pEvent) } // win10rs1+ callback -void CALLBACK _wfp_logcallback2 (LPVOID, const FWPM_NET_EVENT3* pEvent) +VOID CALLBACK _wfp_logcallback2 (LPVOID pContext, const FWPM_NET_EVENT3* pEvent) { UINT16 layer_id; UINT64 filter_id; UINT32 direction; - bool is_loopback; - bool is_allow = false; + BOOLEAN is_loopback; + BOOLEAN is_allow = FALSE; if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && pEvent->classifyDrop) { layer_id = pEvent->classifyDrop->layerId; filter_id = pEvent->classifyDrop->filterId; direction = pEvent->classifyDrop->msFwpDirection; - is_loopback = pEvent->classifyDrop->isLoopback; + is_loopback = !!pEvent->classifyDrop->isLoopback; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && pEvent->ipsecDrop) { layer_id = pEvent->ipsecDrop->layerId; filter_id = pEvent->ipsecDrop->filterId; direction = pEvent->ipsecDrop->direction; - is_loopback = false; + is_loopback = FALSE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW && pEvent->classifyAllow) { layer_id = pEvent->classifyAllow->layerId; filter_id = pEvent->classifyAllow->filterId; direction = pEvent->classifyAllow->msFwpDirection; - is_loopback = pEvent->classifyAllow->isLoopback; + is_loopback = !!pEvent->classifyAllow->isLoopback; - is_allow = true; + is_allow = TRUE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC && pEvent->classifyDropMac) { layer_id = pEvent->classifyDropMac->layerId; filter_id = pEvent->classifyDropMac->filterId; direction = pEvent->classifyDropMac->msFwpDirection; - is_loopback = pEvent->classifyDropMac->isLoopback; + is_loopback = !!pEvent->classifyDropMac->isLoopback; } else { @@ -774,44 +709,44 @@ void CALLBACK _wfp_logcallback2 (LPVOID, const FWPM_NET_EVENT3* pEvent) } // win10rs4+ callback -void CALLBACK _wfp_logcallback3 (LPVOID, const FWPM_NET_EVENT4* pEvent) +VOID CALLBACK _wfp_logcallback3 (LPVOID pContext, const FWPM_NET_EVENT4* pEvent) { UINT16 layer_id; UINT64 filter_id; UINT32 direction; - bool is_loopback; - bool is_allow = false; + BOOLEAN is_loopback; + BOOLEAN is_allow = FALSE; if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && pEvent->classifyDrop) { layer_id = pEvent->classifyDrop->layerId; filter_id = pEvent->classifyDrop->filterId; direction = pEvent->classifyDrop->msFwpDirection; - is_loopback = pEvent->classifyDrop->isLoopback; + is_loopback = !!pEvent->classifyDrop->isLoopback; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && pEvent->ipsecDrop) { layer_id = pEvent->ipsecDrop->layerId; filter_id = pEvent->ipsecDrop->filterId; direction = pEvent->ipsecDrop->direction; - is_loopback = false; + is_loopback = FALSE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW && pEvent->classifyAllow) { layer_id = pEvent->classifyAllow->layerId; filter_id = pEvent->classifyAllow->filterId; direction = pEvent->classifyAllow->msFwpDirection; - is_loopback = pEvent->classifyAllow->isLoopback; + is_loopback = !!pEvent->classifyAllow->isLoopback; - is_allow = true; + is_allow = TRUE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC && pEvent->classifyDropMac) { layer_id = pEvent->classifyDropMac->layerId; filter_id = pEvent->classifyDropMac->filterId; direction = pEvent->classifyDropMac->msFwpDirection; - is_loopback = pEvent->classifyDropMac->isLoopback; + is_loopback = !!pEvent->classifyDropMac->isLoopback; } else { @@ -822,44 +757,44 @@ void CALLBACK _wfp_logcallback3 (LPVOID, const FWPM_NET_EVENT4* pEvent) } // win10rs5+ callback -void CALLBACK _wfp_logcallback4 (LPVOID, const FWPM_NET_EVENT5* pEvent) +VOID CALLBACK _wfp_logcallback4 (LPVOID pContext, const FWPM_NET_EVENT5* pEvent) { UINT16 layer_id; UINT64 filter_id; UINT32 direction; - bool is_loopback; - bool is_allow = false; + BOOLEAN is_loopback; + BOOLEAN is_allow = FALSE; if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP && pEvent->classifyDrop) { layer_id = pEvent->classifyDrop->layerId; filter_id = pEvent->classifyDrop->filterId; direction = pEvent->classifyDrop->msFwpDirection; - is_loopback = pEvent->classifyDrop->isLoopback; + is_loopback = !!pEvent->classifyDrop->isLoopback; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP && pEvent->ipsecDrop) { layer_id = pEvent->ipsecDrop->layerId; filter_id = pEvent->ipsecDrop->filterId; direction = pEvent->ipsecDrop->direction; - is_loopback = false; + is_loopback = FALSE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_ALLOW && pEvent->classifyAllow) { layer_id = pEvent->classifyAllow->layerId; filter_id = pEvent->classifyAllow->filterId; direction = pEvent->classifyAllow->msFwpDirection; - is_loopback = pEvent->classifyAllow->isLoopback; + is_loopback = !!pEvent->classifyAllow->isLoopback; - is_allow = true; + is_allow = TRUE; } else if (pEvent->type == FWPM_NET_EVENT_TYPE_CLASSIFY_DROP_MAC && pEvent->classifyDropMac) { layer_id = pEvent->classifyDropMac->layerId; filter_id = pEvent->classifyDropMac->filterId; direction = pEvent->classifyDropMac->msFwpDirection; - is_loopback = pEvent->classifyDropMac->isLoopback; + is_loopback = !!pEvent->classifyDropMac->isLoopback; } else { @@ -871,71 +806,63 @@ void CALLBACK _wfp_logcallback4 (LPVOID, const FWPM_NET_EVENT5* pEvent) THREAD_FN LogThread (LPVOID lparam) { - const HWND hwnd = (HWND)lparam; + HWND hwnd = (HWND)lparam; _r_fastlock_acquireshared (&lock_logthread); - while (true) + while (TRUE) { - const PSLIST_ENTRY listEntry = RtlInterlockedPopEntrySList (&log_stack.ListHead); + PSLIST_ENTRY listEntry = RtlInterlockedPopEntrySList (&log_stack.ListHead); if (!listEntry) break; InterlockedDecrement (&log_stack.item_count); - PITEM_LIST_ENTRY ptr_entry = CONTAINING_RECORD (listEntry, ITEM_LIST_ENTRY, ListEntry); - PR_OBJECT ptr_log_object = ptr_entry->Body; + PITEM_LOG_LISTENTRY ptr_entry = CONTAINING_RECORD (listEntry, ITEM_LOG_LISTENTRY, ListEntry); + PITEM_LOG ptr_log = (PITEM_LOG)ptr_entry->Body; _aligned_free (ptr_entry); - if (!ptr_log_object) - continue; - - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - if (!ptr_log) - { - _r_obj_dereference (ptr_log_object); continue; - } - const bool is_logenabled = app.ConfigGet (L"IsLogEnabled", false).AsBool (); - const bool is_loguienabled = app.ConfigGet (L"IsLogUiEnabled", true).AsBool (); - const bool is_notificationenabled = app.ConfigGet (L"IsNotificationsEnabled", true).AsBool (); + BOOLEAN is_logenabled = app.ConfigGetBoolean (L"IsLogEnabled", FALSE); + BOOLEAN is_loguienabled = app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE); + BOOLEAN is_notificationenabled = app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE); - const bool is_exludestealth = (!(ptr_log->is_system && app.ConfigGet (L"IsExcludeStealth", true).AsBool ())); + BOOLEAN is_exludestealth = !(ptr_log->is_system && app.ConfigGetBoolean (L"IsExcludeStealth", TRUE)); // apps collector - const bool is_notexist = ptr_log->app_hash && !_r_str_isempty (ptr_log->path) && !ptr_log->is_allow && !_app_isappfound (ptr_log->app_hash); + BOOLEAN is_notexist = ptr_log->app_hash && !_r_str_isempty (ptr_log->path) && !ptr_log->is_allow && !_app_isappfound (ptr_log->app_hash); if (is_notexist) { _r_fastlock_acquireshared (&lock_logbusy); - ptr_log->app_hash = _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, false, false); + ptr_log->app_hash = _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, FALSE, FALSE); _r_fastlock_releaseshared (&lock_logbusy); - const INT app_listview_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoListviewId); if (app_listview_id && app_listview_id == (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) { - _app_listviewsort (hwnd, app_listview_id); + _app_listviewsort (hwnd, app_listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, app_listview_id); } - _app_profile_save (); + _app_profile_save (NULL); } // made network name resolution { _r_fastlock_acquireshared (&lock_logbusy); - LPWSTR buffer = nullptr; + LPWSTR address_fmt = NULL; - _app_formataddress (ptr_log->af, ptr_log->protocol, &ptr_log->remote_addr, 0, &buffer, FMTADDR_RESOLVE_HOST); - _app_formataddress (ptr_log->af, ptr_log->protocol, &ptr_log->local_addr, 0, &buffer, FMTADDR_RESOLVE_HOST); + _app_formataddress (ptr_log->af, ptr_log->protocol, &ptr_log->remote_addr, 0, &address_fmt, FMTADDR_RESOLVE_HOST); + _app_formataddress (ptr_log->af, ptr_log->protocol, &ptr_log->local_addr, 0, &address_fmt, FMTADDR_RESOLVE_HOST); - SAFE_DELETE_ARRAY (buffer); + SAFE_DELETE_MEMORY (address_fmt); _r_fastlock_releaseshared (&lock_logbusy); } @@ -951,12 +878,12 @@ THREAD_FN LogThread (LPVOID lparam) { // write log to a ui if (is_loguienabled) - _app_logwrite_ui (hwnd, ptr_log_object); + _app_logwrite_ui (hwnd, ptr_log); // display notification if (is_notificationenabled && ptr_log->app_hash && !ptr_log->is_allow) { - if (!(ptr_log->is_blocklist && app.ConfigGet (L"IsExcludeBlocklist", true).AsBool ()) && !(ptr_log->is_custom && app.ConfigGet (L"IsExcludeCustomRules", true).AsBool ())) + if (!(ptr_log->is_blocklist && app.ConfigGetBoolean (L"IsExcludeBlocklist", TRUE)) && !(ptr_log->is_custom && app.ConfigGetBoolean (L"IsExcludeCustomRules", TRUE))) { PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); @@ -967,17 +894,17 @@ THREAD_FN LogThread (LPVOID lparam) if (ptr_app) { if (!ptr_app->is_silent) - _app_notifyadd (config.hnotification, _r_obj_reference (ptr_log_object), ptr_app); + _app_notifyadd (config.hnotification, (PITEM_LOG)_r_obj_reference (ptr_log), ptr_app); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } } } } - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } _r_fastlock_releaseshared (&lock_logthread); diff --git a/src/log.hpp b/src/log.hpp index 1a1063f6..e70a9be3 100644 --- a/src/log.hpp +++ b/src/log.hpp @@ -5,23 +5,23 @@ rstring _app_getlogviewer (); -void _app_loginit (bool is_install); -void _app_logwrite (PITEM_LOG ptr_log); -bool _app_logisexists (HWND hwnd, PITEM_LOG ptr_log_new); -void _app_logwrite_ui (HWND hwnd, PR_OBJECT ptr_log_object); -bool _app_logchecklimit (); -void _app_logclear (); -void _app_logclear_ui (HWND hwnd); +VOID _app_loginit (BOOLEAN is_install); +VOID _app_logwrite (PITEM_LOG ptr_log); +BOOLEAN _app_logisexists (HWND hwnd, PITEM_LOG ptr_log_new); +VOID _app_logwrite_ui (HWND hwnd, PITEM_LOG ptr_log); +BOOLEAN _app_logislimitreached (); +VOID _app_logclear (); +VOID _app_logclear_ui (HWND hwnd); -void _wfp_logsubscribe (HANDLE hengine); -void _wfp_logunsubscribe (HANDLE hengine); +VOID _wfp_logsubscribe (HANDLE hengine); +VOID _wfp_logunsubscribe (HANDLE hengine); -void CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* app_id, SID* package_id, SID* user_id, UINT8 proto, FWP_IP_VERSION ipver, UINT32 remote_addr4, FWP_BYTE_ARRAY16 const* remote_addr6, UINT16 remote_port, UINT32 local_addr4, FWP_BYTE_ARRAY16 const* local_addr6, UINT16 local_port, UINT16 layer_id, UINT64 filter_id, UINT32 direction, bool is_allow, bool is_loopback); +VOID CALLBACK _wfp_logcallback (UINT32 flags, FILETIME const* pft, UINT8 const* app_id, SID* package_id, SID* user_id, UINT8 proto, FWP_IP_VERSION ipver, UINT32 remote_addr4, FWP_BYTE_ARRAY16 const* remote_addr6, UINT16 remote_port, UINT32 local_addr4, FWP_BYTE_ARRAY16 const* local_addr6, UINT16 local_port, UINT16 layer_id, UINT64 filter_id, UINT32 direction, BOOLEAN is_allow, BOOLEAN is_loopback); -void CALLBACK _wfp_logcallback0 (LPVOID, const FWPM_NET_EVENT1* pEvent); -void CALLBACK _wfp_logcallback1 (LPVOID, const FWPM_NET_EVENT2* pEvent); -void CALLBACK _wfp_logcallback2 (LPVOID, const FWPM_NET_EVENT3* pEvent); -void CALLBACK _wfp_logcallback3 (LPVOID, const FWPM_NET_EVENT4* pEvent); -void CALLBACK _wfp_logcallback4 (LPVOID, const FWPM_NET_EVENT5* pEvent); +VOID CALLBACK _wfp_logcallback0 (LPVOID pContext, const FWPM_NET_EVENT1* pEvent); +VOID CALLBACK _wfp_logcallback1 (LPVOID pContext, const FWPM_NET_EVENT2* pEvent); +VOID CALLBACK _wfp_logcallback2 (LPVOID pContext, const FWPM_NET_EVENT3* pEvent); +VOID CALLBACK _wfp_logcallback3 (LPVOID pContext, const FWPM_NET_EVENT4* pEvent); +VOID CALLBACK _wfp_logcallback4 (LPVOID pContext, const FWPM_NET_EVENT5* pEvent); THREAD_FN LogThread (LPVOID lparam); diff --git a/src/main.cpp b/src/main.cpp index 0a3d560f..063a1b38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,15 +3,15 @@ #include "global.hpp" -const UINT WM_FINDMSGSTRING = RegisterWindowMessage (FINDMSGSTRING); +UINT WM_FINDMSGSTRING = RegisterWindowMessage (FINDMSGSTRING); THREAD_FN ApplyThread (LPVOID lparam) { - PINSTALL_CONTEXT pcontext = (PINSTALL_CONTEXT)lparam; + PITEM_CONTEXT pcontext = (PITEM_CONTEXT)lparam; _r_fastlock_acquireshared (&lock_apply); - const HANDLE hengine = _wfp_getenginehandle (); + HANDLE hengine = _wfp_getenginehandle (); if (hengine) { @@ -21,13 +21,13 @@ THREAD_FN ApplyThread (LPVOID lparam) if (pcontext->is_install) { - if (_wfp_initialize (hengine, true)) + if (_wfp_initialize (hengine, TRUE)) _wfp_installfilters (hengine); } else { _wfp_destroyfilters (hengine); - _wfp_uninitialize (hengine, true); + _wfp_uninitialize (hengine, TRUE); } // dropped packets logging (win7+) @@ -35,10 +35,10 @@ THREAD_FN ApplyThread (LPVOID lparam) _wfp_logsubscribe (hengine); } - _app_restoreinterfacestate (pcontext->hwnd, true); + _app_restoreinterfacestate (pcontext->hwnd, TRUE); _app_setinterfacestate (pcontext->hwnd); - _app_profile_save (); + _app_profile_save (NULL); SetEvent (config.done_evt); @@ -51,82 +51,77 @@ THREAD_FN ApplyThread (LPVOID lparam) THREAD_FN NetworkMonitorThread (LPVOID lparam) { - DWORD network_timeout = app.ConfigGet (L"NetworkTimeout", NETWORK_TIMEOUT).AsUlong (); + DWORD network_timeout = app.ConfigGetUlong (L"NetworkTimeout", NETWORK_TIMEOUT); if (network_timeout && network_timeout != INFINITE) { - const HWND hwnd = (HWND)lparam; - const INT network_listview_id = IDC_NETWORK; + HWND hwnd = (HWND)lparam; + INT network_listview_id = IDC_NETWORK; HASHER_MAP checker_map; - network_timeout = std::clamp (network_timeout, 500UL, 60UL * 1000UL); // set allowed range + network_timeout = _r_calc_clamp (DWORD, network_timeout, 500, 60 * 1000); // set allowed range - while (true) + while (TRUE) { _app_generate_connections (network_map, checker_map); - const bool is_highlighting_enabled = app.ConfigGet (L"IsEnableHighlighting", true).AsBool () && app.ConfigGet (L"IsHighlightConnection", true, L"colors").AsBool (); - const INT current_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - bool is_refresh = false; + BOOLEAN is_highlighting_enabled = app.ConfigGetBoolean (L"IsEnableHighlighting", TRUE) && app.ConfigGetBoolean (L"IsHighlightConnection", TRUE, L"colors"); + INT current_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + BOOLEAN is_refresh = FALSE; // add new connections into list - for (auto p : network_map) + for (auto &p : network_map) { if (checker_map.find (p.first) == checker_map.end () || !checker_map[p.first]) continue; - PR_OBJECT ptr_network_object = _r_obj_reference (p.second); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_reference (p.second); - if (!ptr_network_object) + if (!ptr_network) continue; - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; + LPWSTR local_fmt = NULL; + LPWSTR remote_fmt = NULL; - if (ptr_network) + _app_formataddress (ptr_network->af, 0, &ptr_network->local_addr, 0, &local_fmt, 0); + _app_formataddress (ptr_network->af, 0, &ptr_network->remote_addr, 0, &remote_fmt, 0); + + INT item_id = _r_listview_getitemcount (hwnd, network_listview_id, FALSE); + + _r_listview_additem (hwnd, network_listview_id, item_id, 0, _r_path_getfilename (ptr_network->path), ptr_network->icon_id, I_GROUPIDNONE, p.first); + + _r_listview_setitem (hwnd, network_listview_id, item_id, 1, !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY); + _r_listview_setitem (hwnd, network_listview_id, item_id, 3, !_r_str_isempty (remote_fmt) ? remote_fmt : SZ_EMPTY); + _r_listview_setitem (hwnd, network_listview_id, item_id, 5, _app_getprotoname (ptr_network->protocol, ptr_network->af)); + _r_listview_setitem (hwnd, network_listview_id, item_id, 6, _app_getstatename (ptr_network->state, NULL)); + + if (ptr_network->local_port) + _r_listview_setitem (hwnd, network_listview_id, item_id, 2, _app_formatport (ptr_network->local_port, TRUE)); + + if (ptr_network->remote_port) + _r_listview_setitem (hwnd, network_listview_id, item_id, 4, _app_formatport (ptr_network->remote_port, TRUE)); + + SAFE_DELETE_MEMORY (local_fmt); + SAFE_DELETE_MEMORY (remote_fmt); + + // redraw listview item + if (is_highlighting_enabled) { - LPWSTR local_fmt = nullptr; - LPWSTR remote_fmt = nullptr; + INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); - _app_formataddress (ptr_network->af, 0, &ptr_network->local_addr, 0, &local_fmt, 0); - _app_formataddress (ptr_network->af, 0, &ptr_network->remote_addr, 0, &remote_fmt, 0); - - const INT item_id = _r_listview_getitemcount (hwnd, network_listview_id); - - _r_listview_additem (hwnd, network_listview_id, item_id, 0, _r_path_getfilename (ptr_network->path), ptr_network->icon_id, I_GROUPIDNONE, p.first); - - _r_listview_setitem (hwnd, network_listview_id, item_id, 1, !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY); - _r_listview_setitem (hwnd, network_listview_id, item_id, 3, !_r_str_isempty (remote_fmt) ? remote_fmt : SZ_EMPTY); - _r_listview_setitem (hwnd, network_listview_id, item_id, 5, _app_getprotoname (ptr_network->protocol, ptr_network->af)); - _r_listview_setitem (hwnd, network_listview_id, item_id, 6, _app_getstatename (ptr_network->state)); - - if (ptr_network->local_port) - _r_listview_setitem (hwnd, network_listview_id, item_id, 2, _app_formatport (ptr_network->local_port, true)); - - if (ptr_network->remote_port) - _r_listview_setitem (hwnd, network_listview_id, item_id, 4, _app_formatport (ptr_network->remote_port, true)); - - SAFE_DELETE_ARRAY (local_fmt); - SAFE_DELETE_ARRAY (remote_fmt); - - // redraw listview item - if (is_highlighting_enabled) + if (app_listview_id && current_listview_id == app_listview_id) { - const INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); + INT item_pos = _app_getposition (hwnd, app_listview_id, ptr_network->app_hash); - if (app_listview_id && current_listview_id == app_listview_id) - { - const INT item_pos = _app_getposition (hwnd, app_listview_id, ptr_network->app_hash); - - if (item_pos != INVALID_INT) - _r_listview_redraw (hwnd, app_listview_id, item_pos, item_pos); - } + if (item_pos != INVALID_INT) + _r_listview_redraw (hwnd, app_listview_id, item_pos); } - - is_refresh = true; } - _r_obj_dereference (ptr_network_object); + is_refresh = TRUE; + + _r_obj_dereference (ptr_network); } // refresh network tab as well @@ -136,56 +131,50 @@ THREAD_FN NetworkMonitorThread (LPVOID lparam) { SendDlgItemMessage (hwnd, network_listview_id, WM_SETREDRAW, FALSE, 0); - _app_listviewsort (hwnd, network_listview_id); - _app_listviewresize (hwnd, network_listview_id, false); + _app_listviewsort (hwnd, network_listview_id, INVALID_INT, FALSE); + _app_listviewresize (hwnd, network_listview_id, FALSE); SendDlgItemMessage (hwnd, network_listview_id, WM_SETREDRAW, TRUE, 0); } } // remove closed connections from list - INT item_count = _r_listview_getitemcount (hwnd, network_listview_id); + INT item_count = _r_listview_getitemcount (hwnd, network_listview_id, FALSE); - for (INT i = 0; i < item_count;) + if (item_count) { - const size_t network_hash = _r_listview_getitemlparam (hwnd, network_listview_id, i); - - if (checker_map.find (network_hash) != checker_map.end ()) + for (INT i = item_count - 1; i != INVALID_INT; i--) { - i += 1; - continue; - } + SIZE_T network_hash = _r_listview_getitemlparam (hwnd, network_listview_id, i); - SendDlgItemMessage (hwnd, network_listview_id, LVM_DELETEITEM, (WPARAM)i, 0); - item_count = _r_listview_getitemcount (hwnd, network_listview_id); + if (checker_map.find (network_hash) != checker_map.end ()) + continue; - PR_OBJECT ptr_network_object = _app_getnetworkitem (network_hash); + SendDlgItemMessage (hwnd, network_listview_id, LVM_DELETEITEM, (WPARAM)i, 0); - // redraw listview item - if (ptr_network_object) - { - if (is_highlighting_enabled) + PITEM_NETWORK ptr_network = _app_getnetworkitem (network_hash); + + // redraw listview item + if (ptr_network) { - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network) + if (is_highlighting_enabled) { - const INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); if (app_listview_id && current_listview_id == app_listview_id) { - const INT item_pos = _app_getposition (hwnd, app_listview_id, ptr_network->app_hash); + INT item_pos = _app_getposition (hwnd, app_listview_id, ptr_network->app_hash); if (item_pos != INVALID_INT) - _r_listview_redraw (hwnd, app_listview_id, item_pos, item_pos); + _r_listview_redraw (hwnd, app_listview_id, item_pos); } } } + + network_map.erase (network_hash); + + _r_obj_dereferenceex (ptr_network, 2); } - - network_map.erase (network_hash); - - _r_obj_dereferenceex (ptr_network_object, 2); } WaitForSingleObjectEx (NtCurrentThread (), network_timeout, FALSE); @@ -195,56 +184,50 @@ THREAD_FN NetworkMonitorThread (LPVOID lparam) return _r_sys_endthread (ERROR_SUCCESS); } -bool _app_changefilters (HWND hwnd, bool is_install, bool is_forced) +BOOLEAN _app_changefilters (HWND hwnd, BOOLEAN is_install, BOOLEAN is_forced) { if (_wfp_isfiltersapplying ()) - return false; + return FALSE; - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); if (is_forced || _wfp_isfiltersinstalled ()) { - _app_initinterfacestate (hwnd, true); + _app_initinterfacestate (hwnd, TRUE); _app_freethreadpool (threads_pool); - PINSTALL_CONTEXT pcontext = (PINSTALL_CONTEXT)_r_mem_allocex (sizeof (INSTALL_CONTEXT), HEAP_ZERO_MEMORY); + PITEM_CONTEXT pcontext = (PITEM_CONTEXT)_r_mem_allocatezero (sizeof (ITEM_CONTEXT)); - if (pcontext) + pcontext->hwnd = hwnd; + pcontext->is_install = is_install; + + HANDLE hthread = _r_sys_createthreadex (&ApplyThread, (LPVOID)pcontext, TRUE, THREAD_PRIORITY_HIGHEST); + + if (!hthread) { - pcontext->hwnd = hwnd; - pcontext->is_install = is_install; - - HANDLE hthread = _r_sys_createthread (&ApplyThread, (LPVOID)pcontext, true, THREAD_PRIORITY_HIGHEST); - - if (!hthread) - { - _r_mem_free (pcontext); - return false; - } - - threads_pool.push_back (hthread); - NtResumeThread (hthread, nullptr); - - return true; + _r_mem_free (pcontext); + return FALSE; } + + threads_pool.push_back (hthread); + _r_sys_resumethread (hthread); + + return TRUE; } - _app_profile_save (); + _app_profile_save (NULL); - _r_listview_redraw (hwnd, listview_id); + _r_listview_redraw (hwnd, listview_id, INVALID_INT); - return false; + return FALSE; } -void addcolor (UINT locale_id, LPCWSTR config_name, bool is_enabled, LPCWSTR config_value, COLORREF default_clr) +VOID addcolor (UINT locale_id, LPCWSTR config_name, BOOLEAN is_enabled, LPCWSTR config_value, COLORREF default_clr) { - PITEM_COLOR ptr_clr = (PITEM_COLOR)_r_mem_allocex (sizeof (ITEM_COLOR), HEAP_ZERO_MEMORY); - - if (!ptr_clr) - return; + PITEM_COLOR ptr_clr = (PITEM_COLOR)_r_mem_allocatezero (sizeof (ITEM_COLOR)); if (!_r_str_isempty (config_name)) _r_str_alloc (&ptr_clr->pcfg_name, _r_str_length (config_name), config_name); @@ -254,7 +237,7 @@ void addcolor (UINT locale_id, LPCWSTR config_name, bool is_enabled, LPCWSTR con _r_str_alloc (&ptr_clr->pcfg_value, _r_str_length (config_value), config_value); ptr_clr->clr_hash = _r_str_hash (config_value); - ptr_clr->new_clr = app.ConfigGet (config_value, default_clr, L"colors").AsUlong (); + ptr_clr->new_clr = app.ConfigGetUlong (config_value, default_clr, L"colors"); } ptr_clr->default_clr = default_clr; @@ -264,7 +247,7 @@ void addcolor (UINT locale_id, LPCWSTR config_name, bool is_enabled, LPCWSTR con colors.push_back (ptr_clr); } -bool _app_installmessage (HWND hwnd, bool is_install) +BOOLEAN _app_installmessage (HWND hwnd, BOOLEAN is_install) { WCHAR flag[64] = {0}; @@ -292,7 +275,7 @@ bool _app_installmessage (HWND hwnd, bool is_install) tdc.lpCallbackData = MAKELONG (0, TRUE); // on top tdc.pButtons = td_buttons; - tdc.cButtons = _countof (td_buttons); + tdc.cButtons = RTL_NUMBER_OF (td_buttons); tdc.nDefaultButton = IDYES; @@ -302,16 +285,16 @@ bool _app_installmessage (HWND hwnd, bool is_install) td_buttons[1].nButtonID = IDNO; td_buttons[1].pszButtonText = button_text_2; - _r_str_copy (button_text_1, _countof (button_text_1), app.LocaleString (is_install ? IDS_TRAY_START : IDS_TRAY_STOP, nullptr)); - _r_str_copy (button_text_2, _countof (button_text_2), app.LocaleString (IDS_CLOSE, nullptr)); + _r_str_copy (button_text_1, RTL_NUMBER_OF (button_text_1), app.LocaleString (is_install ? IDS_TRAY_START : IDS_TRAY_STOP, NULL)); + _r_str_copy (button_text_2, RTL_NUMBER_OF (button_text_2), app.LocaleString (IDS_CLOSE, NULL)); if (is_install) { - _r_str_copy (main, _countof (main), app.LocaleString (IDS_QUESTION_START, nullptr)); - _r_str_copy (flag, _countof (flag), app.LocaleString (IDS_DISABLEWINDOWSFIREWALL_CHK, nullptr)); + _r_str_copy (main, RTL_NUMBER_OF (main), app.LocaleString (IDS_QUESTION_START, NULL)); + _r_str_copy (flag, RTL_NUMBER_OF (flag), app.LocaleString (IDS_DISABLEWINDOWSFIREWALL_CHK, NULL)); tdc.pRadioButtons = td_radios; - tdc.cRadioButtons = _countof (td_radios); + tdc.cRadioButtons = RTL_NUMBER_OF (td_radios); tdc.nDefaultRadioButton = IDYES; @@ -321,18 +304,18 @@ bool _app_installmessage (HWND hwnd, bool is_install) td_radios[1].nButtonID = IDNO; td_radios[1].pszButtonText = radio_text_2; - _r_str_copy (radio_text_1, _countof (radio_text_1), app.LocaleString (IDS_INSTALL_PERMANENT, nullptr)); - _r_str_copy (radio_text_2, _countof (radio_text_2), app.LocaleString (IDS_INSTALL_TEMPORARY, nullptr)); + _r_str_copy (radio_text_1, RTL_NUMBER_OF (radio_text_1), app.LocaleString (IDS_INSTALL_PERMANENT, NULL)); + _r_str_copy (radio_text_2, RTL_NUMBER_OF (radio_text_2), app.LocaleString (IDS_INSTALL_TEMPORARY, NULL)); - if (app.ConfigGet (L"IsDisableWindowsFirewallChecked", true).AsBool ()) + if (app.ConfigGetBoolean (L"IsDisableWindowsFirewallChecked", TRUE)) tdc.dwFlags |= TDF_VERIFICATION_FLAG_CHECKED; } else { - _r_str_copy (main, _countof (main), app.LocaleString (IDS_QUESTION_STOP, nullptr)); - _r_str_copy (flag, _countof (flag), app.LocaleString (IDS_ENABLEWINDOWSFIREWALL_CHK, nullptr)); + _r_str_copy (main, RTL_NUMBER_OF (main), app.LocaleString (IDS_QUESTION_STOP, NULL)); + _r_str_copy (flag, RTL_NUMBER_OF (flag), app.LocaleString (IDS_ENABLEWINDOWSFIREWALL_CHK, NULL)); - if (app.ConfigGet (L"IsEnableWindowsFirewallChecked", true).AsBool ()) + if (app.ConfigGetBoolean (L"IsEnableWindowsFirewallChecked", TRUE)) tdc.dwFlags |= TDF_VERIFICATION_FLAG_CHECKED; } @@ -348,99 +331,99 @@ bool _app_installmessage (HWND hwnd, bool is_install) { config.is_filterstemporary = (radio_code == IDNO); - app.ConfigSet (L"IsDisableWindowsFirewallChecked", is_flagchecked ? true : false); + app.ConfigSetBoolean (L"IsDisableWindowsFirewallChecked", !!is_flagchecked); if (is_flagchecked) - _mps_changeconfig2 (false); + _mps_changeconfig2 (FALSE); } else { - app.ConfigSet (L"IsEnableWindowsFirewallChecked", is_flagchecked ? true : false); + app.ConfigSetBoolean (L"IsEnableWindowsFirewallChecked", !!is_flagchecked); if (is_flagchecked) - _mps_changeconfig2 (true); + _mps_changeconfig2 (TRUE); } - return true; + return TRUE; } } - return false; + return FALSE; } -void _app_config_apply (HWND hwnd, INT ctrl_id) +VOID _app_config_apply (HWND hwnd, INT ctrl_id) { - bool new_val; + BOOLEAN new_val; switch (ctrl_id) { case IDC_RULE_BLOCKOUTBOUND: case IDM_RULE_BLOCKOUTBOUND: { - new_val = !app.ConfigGet (L"BlockOutboundConnections", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"BlockOutboundConnections", TRUE); break; } case IDC_RULE_BLOCKINBOUND: case IDM_RULE_BLOCKINBOUND: { - new_val = !app.ConfigGet (L"BlockInboundConnections", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"BlockInboundConnections", TRUE); break; } case IDC_RULE_ALLOWLOOPBACK: case IDM_RULE_ALLOWLOOPBACK: { - new_val = !app.ConfigGet (L"AllowLoopbackConnections", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"AllowLoopbackConnections", TRUE); break; } case IDC_RULE_ALLOW6TO4: case IDM_RULE_ALLOW6TO4: { - new_val = !app.ConfigGet (L"AllowIPv6", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"AllowIPv6", TRUE); break; } case IDC_SECUREFILTERS_CHK: case IDM_SECUREFILTERS_CHK: { - new_val = !app.ConfigGet (L"IsSecureFilters", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"IsSecureFilters", TRUE); break; } case IDC_USESTEALTHMODE_CHK: case IDM_USESTEALTHMODE_CHK: { - new_val = !app.ConfigGet (L"UseStealthMode", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"UseStealthMode", TRUE); break; } case IDC_INSTALLBOOTTIMEFILTERS_CHK: case IDM_INSTALLBOOTTIMEFILTERS_CHK: { - new_val = !app.ConfigGet (L"InstallBoottimeFilters", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"InstallBoottimeFilters", TRUE); break; } case IDC_USENETWORKRESOLUTION_CHK: case IDM_USENETWORKRESOLUTION_CHK: { - new_val = !app.ConfigGet (L"IsNetworkResolutionsEnabled", false).AsBool (); + new_val = !app.ConfigGetBoolean (L"IsNetworkResolutionsEnabled", FALSE); break; } case IDC_USECERTIFICATES_CHK: case IDM_USECERTIFICATES_CHK: { - new_val = !app.ConfigGet (L"IsCertificatesEnabled", false).AsBool (); + new_val = !app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE); break; } case IDC_USEREFRESHDEVICES_CHK: case IDM_USEREFRESHDEVICES_CHK: { - new_val = !app.ConfigGet (L"IsRefreshDevices", true).AsBool (); + new_val = !app.ConfigGetBoolean (L"IsRefreshDevices", TRUE); break; } @@ -450,14 +433,14 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) } } - const HMENU hmenu = GetMenu (hwnd); + HMENU hmenu = GetMenu (hwnd); switch (ctrl_id) { case IDC_RULE_BLOCKOUTBOUND: case IDM_RULE_BLOCKOUTBOUND: { - app.ConfigSet (L"BlockOutboundConnections", new_val); + app.ConfigSetBoolean (L"BlockOutboundConnections", new_val); _r_menu_checkitem (hmenu, IDM_RULE_BLOCKOUTBOUND, 0, MF_BYCOMMAND, new_val); break; @@ -466,7 +449,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_RULE_BLOCKINBOUND: case IDM_RULE_BLOCKINBOUND: { - app.ConfigSet (L"BlockInboundConnections", new_val); + app.ConfigSetBoolean (L"BlockInboundConnections", new_val); _r_menu_checkitem (hmenu, IDM_RULE_BLOCKINBOUND, 0, MF_BYCOMMAND, new_val); break; @@ -475,7 +458,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_RULE_ALLOWLOOPBACK: case IDM_RULE_ALLOWLOOPBACK: { - app.ConfigSet (L"AllowLoopbackConnections", new_val); + app.ConfigSetBoolean (L"AllowLoopbackConnections", new_val); _r_menu_checkitem (hmenu, IDM_RULE_ALLOWLOOPBACK, 0, MF_BYCOMMAND, new_val); break; @@ -484,7 +467,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_RULE_ALLOW6TO4: case IDM_RULE_ALLOW6TO4: { - app.ConfigSet (L"AllowIPv6", new_val); + app.ConfigSetBoolean (L"AllowIPv6", new_val); _r_menu_checkitem (hmenu, IDM_RULE_ALLOW6TO4, 0, MF_BYCOMMAND, new_val); break; @@ -493,7 +476,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_USESTEALTHMODE_CHK: case IDM_USESTEALTHMODE_CHK: { - app.ConfigSet (L"UseStealthMode", new_val); + app.ConfigSetBoolean (L"UseStealthMode", new_val); _r_menu_checkitem (hmenu, IDM_USESTEALTHMODE_CHK, 0, MF_BYCOMMAND, new_val); break; @@ -502,10 +485,10 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_SECUREFILTERS_CHK: case IDM_SECUREFILTERS_CHK: { - app.ConfigSet (L"IsSecureFilters", new_val); + app.ConfigSetBoolean (L"IsSecureFilters", new_val); _r_menu_checkitem (hmenu, IDM_SECUREFILTERS_CHK, 0, MF_BYCOMMAND, new_val); - const HANDLE hengine = _wfp_getenginehandle (); + HANDLE hengine = _wfp_getenginehandle (); if (hengine) { @@ -516,7 +499,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) if (_wfp_dumpfilters (hengine, &GUID_WfpProvider, &filter_all)) { - for (auto filter_id : filter_all) + for (auto &filter_id : filter_all) _app_setsecurityinfoforfilter (hengine, &filter_id, new_val, __LINE__); } } @@ -527,7 +510,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_INSTALLBOOTTIMEFILTERS_CHK: case IDM_INSTALLBOOTTIMEFILTERS_CHK: { - app.ConfigSet (L"InstallBoottimeFilters", new_val); + app.ConfigSetBoolean (L"InstallBoottimeFilters", new_val); _r_menu_checkitem (hmenu, IDM_INSTALLBOOTTIMEFILTERS_CHK, 0, MF_BYCOMMAND, new_val); break; @@ -536,7 +519,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_USENETWORKRESOLUTION_CHK: case IDM_USENETWORKRESOLUTION_CHK: { - app.ConfigSet (L"IsNetworkResolutionsEnabled", new_val); + app.ConfigSetBoolean (L"IsNetworkResolutionsEnabled", new_val); _r_menu_checkitem (hmenu, IDM_USENETWORKRESOLUTION_CHK, 0, MF_BYCOMMAND, new_val); break; @@ -545,14 +528,14 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_USECERTIFICATES_CHK: case IDM_USECERTIFICATES_CHK: { - app.ConfigSet (L"IsCertificatesEnabled", new_val); + app.ConfigSetBoolean (L"IsCertificatesEnabled", new_val); _r_menu_checkitem (hmenu, IDM_USECERTIFICATES_CHK, 0, MF_BYCOMMAND, new_val); if (new_val) { - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -564,14 +547,14 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) PR_OBJECT ptr_signature_object = _app_getsignatureinfo (p.first, ptr_app); if (ptr_signature_object) - _r_obj_dereference (ptr_signature_object); + _r_obj2_dereference (ptr_signature_object); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } - _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT)); + _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT), INVALID_INT); break; } @@ -579,7 +562,7 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) case IDC_USEREFRESHDEVICES_CHK: case IDM_USEREFRESHDEVICES_CHK: { - app.ConfigSet (L"IsRefreshDevices", new_val); + app.ConfigSetBoolean (L"IsRefreshDevices", new_val); _r_menu_checkitem (hmenu, IDM_USEREFRESHDEVICES_CHK, 0, MF_BYCOMMAND, new_val); break; @@ -601,7 +584,10 @@ void _app_config_apply (HWND hwnd, INT ctrl_id) } } - _wfp_create2filters (_wfp_getenginehandle (), __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create2filters (hengine, __LINE__); } INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) @@ -619,58 +605,58 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case RM_INITIALIZE: { - const INT dialog_id = (INT)wparam; + INT dialog_id = (INT)wparam; switch (dialog_id) { case IDD_SETTINGS_GENERAL: { - CheckDlgButton (hwnd, IDC_ALWAYSONTOP_CHK, app.ConfigGet (L"AlwaysOnTop", _APP_ALWAYSONTOP).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_ALWAYSONTOP_CHK, app.ConfigGetBoolean (L"AlwaysOnTop", _APP_ALWAYSONTOP) ? BST_CHECKED : BST_UNCHECKED); #if defined(_APP_HAVE_AUTORUN) CheckDlgButton (hwnd, IDC_LOADONSTARTUP_CHK, app.AutorunIsEnabled () ? BST_CHECKED : BST_UNCHECKED); #endif // _APP_HAVE_AUTORUN - CheckDlgButton (hwnd, IDC_STARTMINIMIZED_CHK, app.ConfigGet (L"IsStartMinimized", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_STARTMINIMIZED_CHK, app.ConfigGetBoolean (L"IsStartMinimized", FALSE) ? BST_CHECKED : BST_UNCHECKED); #if defined(_APP_HAVE_SKIPUAC) CheckDlgButton (hwnd, IDC_SKIPUACWARNING_CHK, app.SkipUacIsEnabled () ? BST_CHECKED : BST_UNCHECKED); #endif // _APP_HAVE_SKIPUAC - CheckDlgButton (hwnd, IDC_CHECKUPDATES_CHK, app.ConfigGet (L"CheckUpdates", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_CHECKUPDATES_CHK, app.ConfigGetBoolean (L"CheckUpdates", TRUE) ? BST_CHECKED : BST_UNCHECKED); #if defined(_DEBUG) || defined(_APP_BETA) CheckDlgButton (hwnd, IDC_CHECKUPDATESBETA_CHK, BST_CHECKED); - _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, false); + _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, FALSE); #else - CheckDlgButton (hwnd, IDC_CHECKUPDATESBETA_CHK, app.ConfigGet (L"CheckUpdatesBeta", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_CHECKUPDATESBETA_CHK, app.ConfigGetBoolean (L"CheckUpdatesBeta", FALSE) ? BST_CHECKED : BST_UNCHECKED); - if (!app.ConfigGet (L"CheckUpdates", true).AsBool ()) - _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, false); + if (!app.ConfigGetBoolean (L"CheckUpdates", TRUE)) + _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, FALSE); #endif // _DEBUG || _APP_BETA - app.LocaleEnum (hwnd, IDC_LANGUAGE, false, 0); + app.LocaleEnum (hwnd, IDC_LANGUAGE, FALSE, 0); break; } case IDD_SETTINGS_RULES: { - CheckDlgButton (hwnd, IDC_RULE_BLOCKOUTBOUND, app.ConfigGet (L"BlockOutboundConnections", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_RULE_BLOCKINBOUND, app.ConfigGet (L"BlockInboundConnections", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_RULE_BLOCKOUTBOUND, app.ConfigGetBoolean (L"BlockOutboundConnections", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_RULE_BLOCKINBOUND, app.ConfigGetBoolean (L"BlockInboundConnections", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_RULE_ALLOWLOOPBACK, app.ConfigGet (L"AllowLoopbackConnections", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_RULE_ALLOW6TO4, app.ConfigGet (L"AllowIPv6", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_RULE_ALLOWLOOPBACK, app.ConfigGetBoolean (L"AllowLoopbackConnections", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_RULE_ALLOW6TO4, app.ConfigGetBoolean (L"AllowIPv6", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_SECUREFILTERS_CHK, app.ConfigGet (L"IsSecureFilters", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_USESTEALTHMODE_CHK, app.ConfigGet (L"UseStealthMode", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_INSTALLBOOTTIMEFILTERS_CHK, app.ConfigGet (L"InstallBoottimeFilters", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_SECUREFILTERS_CHK, app.ConfigGetBoolean (L"IsSecureFilters", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_USESTEALTHMODE_CHK, app.ConfigGetBoolean (L"UseStealthMode", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_INSTALLBOOTTIMEFILTERS_CHK, app.ConfigGetBoolean (L"InstallBoottimeFilters", TRUE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_USECERTIFICATES_CHK, app.ConfigGet (L"IsCertificatesEnabled", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_USENETWORKRESOLUTION_CHK, app.ConfigGet (L"IsNetworkResolutionsEnabled", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_USEREFRESHDEVICES_CHK, app.ConfigGet (L"IsRefreshDevices", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_USECERTIFICATES_CHK, app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_USENETWORKRESOLUTION_CHK, app.ConfigGetBoolean (L"IsNetworkResolutionsEnabled", FALSE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_USEREFRESHDEVICES_CHK, app.ConfigGetBoolean (L"IsRefreshDevices", TRUE) ? BST_CHECKED : BST_UNCHECKED); - const HWND htip = _r_ctrl_createtip (hwnd); + HWND htip = _r_ctrl_createtip (hwnd); if (htip) { @@ -692,18 +678,18 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam for (INT i = IDC_BLOCKLIST_SPY_DISABLE; i <= IDC_BLOCKLIST_EXTRA_BLOCK; i++) CheckDlgButton (hwnd, i, BST_UNCHECKED); // HACK!!! reset button checkboxes! - CheckDlgButton (hwnd, (IDC_BLOCKLIST_SPY_DISABLE + std::clamp (app.ConfigGet (L"BlocklistSpyState", 2).AsInt (), 0, 2)), BST_CHECKED); - CheckDlgButton (hwnd, (IDC_BLOCKLIST_UPDATE_DISABLE + std::clamp (app.ConfigGet (L"BlocklistUpdateState", 0).AsInt (), 0, 2)), BST_CHECKED); - CheckDlgButton (hwnd, (IDC_BLOCKLIST_EXTRA_DISABLE + std::clamp (app.ConfigGet (L"BlocklistExtraState", 0).AsInt (), 0, 2)), BST_CHECKED); + CheckDlgButton (hwnd, (IDC_BLOCKLIST_SPY_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistSpyState", 2), 0, 2)), BST_CHECKED); + CheckDlgButton (hwnd, (IDC_BLOCKLIST_UPDATE_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistUpdateState", 0), 0, 2)), BST_CHECKED); + CheckDlgButton (hwnd, (IDC_BLOCKLIST_EXTRA_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistExtraState", 0), 0, 2)), BST_CHECKED); break; } case IDD_SETTINGS_INTERFACE: { - CheckDlgButton (hwnd, IDC_CONFIRMEXIT_CHK, app.ConfigGet (L"ConfirmExit2", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_CONFIRMEXITTIMER_CHK, app.ConfigGet (L"ConfirmExitTimer", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_CONFIRMLOGCLEAR_CHK, app.ConfigGet (L"ConfirmLogClear", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_CONFIRMEXIT_CHK, app.ConfigGetBoolean (L"ConfirmExit2", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_CONFIRMEXITTIMER_CHK, app.ConfigGetBoolean (L"ConfirmExitTimer", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_CONFIRMLOGCLEAR_CHK, app.ConfigGetBoolean (L"ConfirmLogClear", TRUE) ? BST_CHECKED : BST_UNCHECKED); break; } @@ -722,14 +708,14 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam INT item = 0; - for (auto ptr_clr : colors) + for (auto &ptr_clr : colors) { - ptr_clr->new_clr = app.ConfigGet (ptr_clr->pcfg_value, ptr_clr->default_clr, L"colors").AsUlong (); + ptr_clr->new_clr = app.ConfigGetUlong (ptr_clr->pcfg_value, ptr_clr->default_clr, L"colors"); _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_additem (hwnd, IDC_COLORS, item, 0, app.LocaleString (ptr_clr->locale_id, nullptr), config.icon_id, I_GROUPIDNONE, (LPARAM)ptr_clr); - _r_listview_setitemcheck (hwnd, IDC_COLORS, item, app.ConfigGet (ptr_clr->pcfg_name, ptr_clr->is_enabled, L"colors").AsBool ()); + _r_listview_additem (hwnd, IDC_COLORS, item, 0, app.LocaleString (ptr_clr->locale_id, NULL), config.icon_id, I_GROUPIDNONE, (LPARAM)ptr_clr); + _r_listview_setitemcheck (hwnd, IDC_COLORS, item, app.ConfigGetBoolean (ptr_clr->pcfg_name, ptr_clr->is_enabled, L"colors")); _r_fastlock_releaseshared (&lock_checkbox); @@ -741,15 +727,15 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDD_SETTINGS_NOTIFICATIONS: { - CheckDlgButton (hwnd, IDC_ENABLENOTIFICATIONS_CHK, app.ConfigGet (L"IsNotificationsEnabled", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_NOTIFICATIONSOUND_CHK, app.ConfigGet (L"IsNotificationsSound", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_NOTIFICATIONONTRAY_CHK, app.ConfigGet (L"IsNotificationsOnTray", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_ENABLENOTIFICATIONS_CHK, app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_NOTIFICATIONSOUND_CHK, app.ConfigGetBoolean (L"IsNotificationsSound", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_NOTIFICATIONONTRAY_CHK, app.ConfigGetBoolean (L"IsNotificationsOnTray", FALSE) ? BST_CHECKED : BST_UNCHECKED); SendDlgItemMessage (hwnd, IDC_NOTIFICATIONTIMEOUT, UDM_SETRANGE32, 0, _R_SECONDSCLOCK_DAY (7)); - SendDlgItemMessage (hwnd, IDC_NOTIFICATIONTIMEOUT, UDM_SETPOS32, 0, (LPARAM)app.ConfigGet (L"NotificationsTimeout", NOTIFY_TIMEOUT_DEFAULT).AsLonglong ()); + SendDlgItemMessage (hwnd, IDC_NOTIFICATIONTIMEOUT, UDM_SETPOS32, 0, (LPARAM)app.ConfigGetUlong (L"NotificationsTimeout", NOTIFY_TIMEOUT_DEFAULT)); - CheckDlgButton (hwnd, IDC_EXCLUDEBLOCKLIST_CHK, app.ConfigGet (L"IsExcludeBlocklist", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_EXCLUDECUSTOM_CHK, app.ConfigGet (L"IsExcludeCustomRules", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_EXCLUDEBLOCKLIST_CHK, app.ConfigGetBoolean (L"IsExcludeBlocklist", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_EXCLUDECUSTOM_CHK, app.ConfigGetBoolean (L"IsExcludeCustomRules", TRUE) ? BST_CHECKED : BST_UNCHECKED); PostMessage (hwnd, WM_COMMAND, MAKEWPARAM (IDC_ENABLENOTIFICATIONS_CHK, 0), 0); @@ -758,26 +744,26 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDD_SETTINGS_LOGGING: { - CheckDlgButton (hwnd, IDC_ENABLELOG_CHK, app.ConfigGet (L"IsLogEnabled", false).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_ENABLELOG_CHK, app.ConfigGetBoolean (L"IsLogEnabled", FALSE) ? BST_CHECKED : BST_UNCHECKED); - SetDlgItemText (hwnd, IDC_LOGPATH, app.ConfigGet (L"LogPath", LOG_PATH_DEFAULT)); - SetDlgItemText (hwnd, IDC_LOGVIEWER, app.ConfigGet (L"LogViewer", LOG_VIEWER_DEFAULT)); + SetDlgItemText (hwnd, IDC_LOGPATH, app.ConfigGetString (L"LogPath", LOG_PATH_DEFAULT)); + SetDlgItemText (hwnd, IDC_LOGVIEWER, app.ConfigGetString (L"LogViewer", LOG_VIEWER_DEFAULT)); UDACCEL ud = {0}; ud.nInc = 64; // set step to 64kb SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_SETACCEL, 1, (LPARAM)&ud); SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_SETRANGE32, 64, _R_BYTESIZE_KB * 512); - SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_SETPOS32, 0, (LPARAM)app.ConfigGet (L"LogSizeLimitKb", LOG_SIZE_LIMIT_DEFAULT).AsUlong ()); + SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_SETPOS32, 0, (LPARAM)app.ConfigGetUlong (L"LogSizeLimitKb", LOG_SIZE_LIMIT_DEFAULT)); - CheckDlgButton (hwnd, IDC_ENABLEUILOG_CHK, app.ConfigGet (L"IsLogUiEnabled", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_ENABLEUILOG_CHK, app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE) ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_EXCLUDESTEALTH_CHK, app.ConfigGet (L"IsExcludeStealth", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, app.ConfigGet (L"IsExcludeClassifyAllow", true).AsBool () ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_EXCLUDESTEALTH_CHK, app.ConfigGetBoolean (L"IsExcludeStealth", TRUE) ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, app.ConfigGetBoolean (L"IsExcludeClassifyAllow", TRUE) ? BST_CHECKED : BST_UNCHECKED); // win8+ if (!_r_sys_validversion (6, 2)) - _r_ctrl_enable (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, false); + _r_ctrl_enable (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, FALSE); PostMessage (hwnd, WM_COMMAND, MAKEWPARAM (IDC_ENABLELOG_CHK, 0), 0); @@ -792,8 +778,8 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case RM_LOCALIZE: { - const INT dialog_id = (INT)wparam; - const rstring recommended = app.LocaleString (IDS_RECOMMENDED, nullptr); + INT dialog_id = (INT)wparam; + rstring recommended = app.LocaleString (IDS_RECOMMENDED, NULL); // localize titles SetDlgItemText (hwnd, IDC_TITLE_GENERAL, app.LocaleString (IDS_TITLE_GENERAL, L":")); @@ -815,14 +801,14 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam { case IDD_SETTINGS_GENERAL: { - SetDlgItemText (hwnd, IDC_ALWAYSONTOP_CHK, app.LocaleString (IDS_ALWAYSONTOP_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_LOADONSTARTUP_CHK, app.LocaleString (IDS_LOADONSTARTUP_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_STARTMINIMIZED_CHK, app.LocaleString (IDS_STARTMINIMIZED_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_SKIPUACWARNING_CHK, app.LocaleString (IDS_SKIPUACWARNING_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_CHECKUPDATES_CHK, app.LocaleString (IDS_CHECKUPDATES_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_CHECKUPDATESBETA_CHK, app.LocaleString (IDS_CHECKUPDATESBETA_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_ALWAYSONTOP_CHK, app.LocaleString (IDS_ALWAYSONTOP_CHK, NULL)); + SetDlgItemText (hwnd, IDC_LOADONSTARTUP_CHK, app.LocaleString (IDS_LOADONSTARTUP_CHK, NULL)); + SetDlgItemText (hwnd, IDC_STARTMINIMIZED_CHK, app.LocaleString (IDS_STARTMINIMIZED_CHK, NULL)); + SetDlgItemText (hwnd, IDC_SKIPUACWARNING_CHK, app.LocaleString (IDS_SKIPUACWARNING_CHK, NULL)); + SetDlgItemText (hwnd, IDC_CHECKUPDATES_CHK, app.LocaleString (IDS_CHECKUPDATES_CHK, NULL)); + SetDlgItemText (hwnd, IDC_CHECKUPDATESBETA_CHK, app.LocaleString (IDS_CHECKUPDATESBETA_CHK, NULL)); - SetDlgItemText (hwnd, IDC_LANGUAGE_HINT, app.LocaleString (IDS_LANGUAGE_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_LANGUAGE_HINT, app.LocaleString (IDS_LANGUAGE_HINT, NULL)); break; } @@ -839,8 +825,8 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam SetDlgItemText (hwnd, IDC_USESTEALTHMODE_CHK, app.LocaleString (IDS_USESTEALTHMODE_CHK, _r_fmt (L" (%s)", recommended.GetString ()))); SetDlgItemText (hwnd, IDC_INSTALLBOOTTIMEFILTERS_CHK, app.LocaleString (IDS_INSTALLBOOTTIMEFILTERS_CHK, _r_fmt (L" (%s)", recommended.GetString ()))); - SetDlgItemText (hwnd, IDC_USENETWORKRESOLUTION_CHK, app.LocaleString (IDS_USENETWORKRESOLUTION_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_USECERTIFICATES_CHK, app.LocaleString (IDS_USECERTIFICATES_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_USENETWORKRESOLUTION_CHK, app.LocaleString (IDS_USENETWORKRESOLUTION_CHK, NULL)); + SetDlgItemText (hwnd, IDC_USECERTIFICATES_CHK, app.LocaleString (IDS_USECERTIFICATES_CHK, NULL)); SetDlgItemText (hwnd, IDC_USEREFRESHDEVICES_CHK, app.LocaleString (IDS_USEREFRESHDEVICES_CHK, _r_fmt (L" (%s)", recommended.GetString ()))); break; @@ -848,17 +834,17 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDD_SETTINGS_BLOCKLIST: { - SetDlgItemText (hwnd, IDC_BLOCKLIST_SPY_DISABLE, app.LocaleString (IDS_DISABLE, nullptr)); - SetDlgItemText (hwnd, IDC_BLOCKLIST_SPY_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_SPY_DISABLE, app.LocaleString (IDS_DISABLE, NULL)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_SPY_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, NULL)); SetDlgItemText (hwnd, IDC_BLOCKLIST_SPY_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, _r_fmt (L" (%s)", recommended.GetString ()))); SetDlgItemText (hwnd, IDC_BLOCKLIST_UPDATE_DISABLE, app.LocaleString (IDS_DISABLE, _r_fmt (L" (%s)", recommended.GetString ()))); - SetDlgItemText (hwnd, IDC_BLOCKLIST_UPDATE_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); - SetDlgItemText (hwnd, IDC_BLOCKLIST_UPDATE_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, nullptr)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_UPDATE_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, NULL)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_UPDATE_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, NULL)); SetDlgItemText (hwnd, IDC_BLOCKLIST_EXTRA_DISABLE, app.LocaleString (IDS_DISABLE, _r_fmt (L" (%s)", recommended.GetString ()))); - SetDlgItemText (hwnd, IDC_BLOCKLIST_EXTRA_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); - SetDlgItemText (hwnd, IDC_BLOCKLIST_EXTRA_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, nullptr)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_EXTRA_ALLOW, app.LocaleString (IDS_ACTION_ALLOW, NULL)); + SetDlgItemText (hwnd, IDC_BLOCKLIST_EXTRA_BLOCK, app.LocaleString (IDS_ACTION_BLOCK, NULL)); _r_ctrl_settext (hwnd, IDC_BLOCKLIST_INFO, L"Author: WindowsSpyBlocker - block spying and tracking on Windows systems.", WINDOWSSPYBLOCKER_URL, WINDOWSSPYBLOCKER_URL); @@ -867,30 +853,30 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDD_SETTINGS_INTERFACE: { - SetDlgItemText (hwnd, IDC_CONFIRMEXIT_CHK, app.LocaleString (IDS_CONFIRMEXIT_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_CONFIRMEXITTIMER_CHK, app.LocaleString (IDS_CONFIRMEXITTIMER_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_CONFIRMLOGCLEAR_CHK, app.LocaleString (IDS_CONFIRMLOGCLEAR_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_CONFIRMEXIT_CHK, app.LocaleString (IDS_CONFIRMEXIT_CHK, NULL)); + SetDlgItemText (hwnd, IDC_CONFIRMEXITTIMER_CHK, app.LocaleString (IDS_CONFIRMEXITTIMER_CHK, NULL)); + SetDlgItemText (hwnd, IDC_CONFIRMLOGCLEAR_CHK, app.LocaleString (IDS_CONFIRMLOGCLEAR_CHK, NULL)); break; } case IDD_SETTINGS_HIGHLIGHTING: { - _r_listview_setcolumn (hwnd, IDC_COLORS, 0, nullptr, -100); + _r_listview_setcolumn (hwnd, IDC_COLORS, 0, NULL, -100); - for (INT i = 0; i < _r_listview_getitemcount (hwnd, IDC_COLORS); i++) + for (INT i = 0; i < _r_listview_getitemcount (hwnd, IDC_COLORS, FALSE); i++) { PITEM_COLOR ptr_clr = (PITEM_COLOR)_r_listview_getitemlparam (hwnd, IDC_COLORS, i); if (ptr_clr) { _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_setitem (hwnd, IDC_COLORS, i, 0, app.LocaleString (ptr_clr->locale_id, nullptr)); + _r_listview_setitem (hwnd, IDC_COLORS, i, 0, app.LocaleString (ptr_clr->locale_id, NULL)); _r_fastlock_releaseshared (&lock_checkbox); } } - SetDlgItemText (hwnd, IDC_COLORS_HINT, app.LocaleString (IDS_COLORS_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_COLORS_HINT, app.LocaleString (IDS_COLORS_HINT, NULL)); break; } @@ -898,33 +884,33 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDD_SETTINGS_NOTIFICATIONS: { - SetDlgItemText (hwnd, IDC_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_NOTIFICATIONSOUND_CHK, app.LocaleString (IDS_NOTIFICATIONSOUND_CHK, nullptr)); - SetDlgItemText (hwnd, IDC_NOTIFICATIONONTRAY_CHK, app.LocaleString (IDS_NOTIFICATIONONTRAY_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, NULL)); + SetDlgItemText (hwnd, IDC_NOTIFICATIONSOUND_CHK, app.LocaleString (IDS_NOTIFICATIONSOUND_CHK, NULL)); + SetDlgItemText (hwnd, IDC_NOTIFICATIONONTRAY_CHK, app.LocaleString (IDS_NOTIFICATIONONTRAY_CHK, NULL)); - SetDlgItemText (hwnd, IDC_NOTIFICATIONTIMEOUT_HINT, app.LocaleString (IDS_NOTIFICATIONTIMEOUT_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_NOTIFICATIONTIMEOUT_HINT, app.LocaleString (IDS_NOTIFICATIONTIMEOUT_HINT, NULL)); - const rstring exclude = app.LocaleString (IDS_TITLE_EXCLUDE, nullptr); + rstring exclude = app.LocaleString (IDS_TITLE_EXCLUDE, NULL); - SetDlgItemText (hwnd, IDC_EXCLUDEBLOCKLIST_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDEBLOCKLIST_CHK, nullptr).GetString ())); - SetDlgItemText (hwnd, IDC_EXCLUDECUSTOM_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDECUSTOM_CHK, nullptr).GetString ())); + SetDlgItemText (hwnd, IDC_EXCLUDEBLOCKLIST_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDEBLOCKLIST_CHK, NULL).GetString ())); + SetDlgItemText (hwnd, IDC_EXCLUDECUSTOM_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDECUSTOM_CHK, NULL).GetString ())); break; } case IDD_SETTINGS_LOGGING: { - SetDlgItemText (hwnd, IDC_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, nullptr)); + SetDlgItemText (hwnd, IDC_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, NULL)); SetDlgItemText (hwnd, IDC_LOGVIEWER_HINT, app.LocaleString (IDS_LOGVIEWER_HINT, L":")); - SetDlgItemText (hwnd, IDC_LOGSIZELIMIT_HINT, app.LocaleString (IDS_LOGSIZELIMIT_HINT, nullptr)); + SetDlgItemText (hwnd, IDC_LOGSIZELIMIT_HINT, app.LocaleString (IDS_LOGSIZELIMIT_HINT, NULL)); SetDlgItemText (hwnd, IDC_ENABLEUILOG_CHK, app.LocaleString (IDS_ENABLEUILOG_CHK, L" (session only)")); - const rstring exclude = app.LocaleString (IDS_TITLE_EXCLUDE, nullptr); + rstring exclude = app.LocaleString (IDS_TITLE_EXCLUDE, NULL); - SetDlgItemText (hwnd, IDC_EXCLUDESTEALTH_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDESTEALTH_CHK, nullptr).GetString ())); - SetDlgItemText (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDECLASSIFYALLOW_CHK, (_r_sys_validversion (6, 2) ? nullptr : L" [win8+]")).GetString ())); + SetDlgItemText (hwnd, IDC_EXCLUDESTEALTH_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDESTEALTH_CHK, NULL).GetString ())); + SetDlgItemText (hwnd, IDC_EXCLUDECLASSIFYALLOW_CHK, _r_fmt (L"%s %s", exclude.GetString (), app.LocaleString (IDS_EXCLUDECLASSIFYALLOW_CHK, (_r_sys_validversion (6, 2) ? NULL : L" [win8+]")).GetString ())); _r_wnd_addstyle (hwnd, IDC_LOGPATH_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_LOGVIEWER_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); @@ -939,13 +925,13 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case WM_VSCROLL: case WM_HSCROLL: { - const INT ctrl_id = GetDlgCtrlID ((HWND)lparam); + INT ctrl_id = GetDlgCtrlID ((HWND)lparam); if (ctrl_id == IDC_LOGSIZELIMIT) - app.ConfigSet (L"LogSizeLimitKb", (DWORD)SendDlgItemMessage (hwnd, ctrl_id, UDM_GETPOS32, 0, 0)); + app.ConfigSetUlong (L"LogSizeLimitKb", (DWORD)SendDlgItemMessage (hwnd, ctrl_id, UDM_GETPOS32, 0, 0)); else if (ctrl_id == IDC_NOTIFICATIONTIMEOUT) - app.ConfigSet (L"NotificationsTimeout", (time_t)SendDlgItemMessage (hwnd, ctrl_id, UDM_GETPOS32, 0, 0)); + app.ConfigSetUlong (L"NotificationsTimeout", (DWORD)SendDlgItemMessage (hwnd, ctrl_id, UDM_GETPOS32, 0, 0)); break; } @@ -963,25 +949,25 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if ((lpnmdi->uFlags & TTF_IDISHWND) == TTF_IDISHWND) { WCHAR buffer[1024] = {0}; - const INT ctrl_id = GetDlgCtrlID (reinterpret_cast(lpnmdi->hdr.idFrom)); + INT ctrl_id = GetDlgCtrlID ((HWND)(lpnmdi->hdr.idFrom)); if (ctrl_id == IDC_RULE_BLOCKOUTBOUND) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_RULE_BLOCKOUTBOUND, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_RULE_BLOCKOUTBOUND, NULL)); else if (ctrl_id == IDC_RULE_BLOCKINBOUND) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_RULE_BLOCKINBOUND, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_RULE_BLOCKINBOUND, NULL)); else if (ctrl_id == IDC_RULE_ALLOWLOOPBACK) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_RULE_ALLOWLOOPBACK_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_RULE_ALLOWLOOPBACK_HINT, NULL)); else if (ctrl_id == IDC_USESTEALTHMODE_CHK) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_USESTEALTHMODE_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_USESTEALTHMODE_HINT, NULL)); else if (ctrl_id == IDC_INSTALLBOOTTIMEFILTERS_CHK) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_INSTALLBOOTTIMEFILTERS_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_INSTALLBOOTTIMEFILTERS_HINT, NULL)); else if (ctrl_id == IDC_SECUREFILTERS_CHK) - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_SECUREFILTERS_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_SECUREFILTERS_HINT, NULL)); if (!_r_str_isempty (buffer)) lpnmdi->lpszText = buffer; @@ -994,7 +980,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if ((lpnmlv->uChanged & LVIF_STATE) != 0) { @@ -1005,15 +991,15 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if (_r_fastlock_islocked (&lock_checkbox)) break; - const bool is_enabled = (lpnmlv->uNewState & LVIS_STATEIMAGEMASK) == INDEXTOSTATEIMAGEMASK (2); + BOOLEAN is_enabled = (lpnmlv->uNewState & LVIS_STATEIMAGEMASK) == INDEXTOSTATEIMAGEMASK (2); PITEM_COLOR ptr_clr = (PITEM_COLOR)lpnmlv->lParam; if (ptr_clr) { - app.ConfigSet (ptr_clr->pcfg_name, is_enabled, L"colors"); + app.ConfigSetBoolean (ptr_clr->pcfg_name, is_enabled, L"colors"); - _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT)); + _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT), INVALID_INT); } } } @@ -1024,7 +1010,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case NM_CUSTOMDRAW: { - const LONG result = _app_nmcustdraw_listview ((LPNMLVCUSTOMDRAW)lparam); + LONG_PTR result = _app_nmcustdraw_listview ((LPNMLVCUSTOMDRAW)lparam); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, result); return result; @@ -1034,7 +1020,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam { LPNMITEMACTIVATE lpnmlv = (LPNMITEMACTIVATE)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if (lpnmlv->iItem == INVALID_INT) break; @@ -1048,9 +1034,9 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam CHOOSECOLOR cc = {0}; COLORREF cust[16] = {0}; - size_t index = 0; + SIZE_T index = 0; - for (auto ptr_clr : colors) + for (auto &ptr_clr : colors) { if (ptr_clr) cust[index++] = ptr_clr->default_clr; @@ -1065,10 +1051,10 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if (ChooseColor (&cc)) { ptr_clr_current->new_clr = cc.rgbResult; - app.ConfigSet (ptr_clr_current->pcfg_value, cc.rgbResult, L"colors"); + app.ConfigSetUlong (ptr_clr_current->pcfg_value, cc.rgbResult, L"colors"); - _r_listview_redraw (hwnd, IDC_COLORS); - _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT)); + _r_listview_redraw (hwnd, IDC_COLORS, INVALID_INT); + _r_listview_redraw (app.GetHWND (), (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT), INVALID_INT); } } } @@ -1082,7 +1068,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam PNMLINK pnmlink = (PNMLINK)lparam; if (!_r_str_isempty (pnmlink->item.szUrl)) - ShellExecute (nullptr, nullptr, pnmlink->item.szUrl, nullptr, nullptr, SW_SHOWNORMAL); + ShellExecute (NULL, NULL, pnmlink->item.szUrl, NULL, NULL, SW_SHOWNORMAL); break; } @@ -1092,7 +1078,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam NMLVEMPTYMARKUP* lpnmlv = (NMLVEMPTYMARKUP*)lparam; lpnmlv->dwFlags = EMF_CENTERED; - _r_str_copy (lpnmlv->szMarkup, _countof (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, nullptr)); + _r_str_copy (lpnmlv->szMarkup, RTL_NUMBER_OF (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, NULL)); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -1104,16 +1090,16 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); - const INT notify_code = HIWORD (wparam); + INT ctrl_id = LOWORD (wparam); + INT notify_code = HIWORD (wparam); switch (ctrl_id) { case IDC_ALWAYSONTOP_CHK: { - const bool is_enabled = !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + BOOLEAN is_enabled = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); - app.ConfigSet (L"AlwaysOnTop", is_enabled); + app.ConfigSetBoolean (L"AlwaysOnTop", is_enabled); _r_menu_checkitem (GetMenu (app.GetHWND ()), IDM_ALWAYSONTOP_CHK, 0, MF_BYCOMMAND, is_enabled); break; @@ -1122,7 +1108,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam #if defined(_APP_HAVE_AUTORUN) case IDC_LOADONSTARTUP_CHK: { - app.AutorunEnable (hwnd, IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + app.AutorunEnable (hwnd, (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); CheckDlgButton (hwnd, ctrl_id, app.AutorunIsEnabled () ? BST_CHECKED : BST_UNCHECKED); break; @@ -1131,14 +1117,14 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_STARTMINIMIZED_CHK: { - app.ConfigSet (L"IsStartMinimized", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsStartMinimized", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } #if defined(_APP_HAVE_SKIPUAC) case IDC_SKIPUACWARNING_CHK: { - app.SkipUacEnable (hwnd, IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + app.SkipUacEnable (hwnd, (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); CheckDlgButton (hwnd, ctrl_id, app.SkipUacIsEnabled () ? BST_CHECKED : BST_UNCHECKED); break; @@ -1147,12 +1133,12 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_CHECKUPDATES_CHK: { - const bool is_enabled = !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + BOOLEAN is_enabled = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); - app.ConfigSet (L"CheckUpdates", is_enabled); + app.ConfigSetBoolean (L"CheckUpdates", is_enabled); #if !defined(_DEBUG) && !defined(_APP_BETA) - _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, is_enabled ? true : false); + _r_ctrl_enable (hwnd, IDC_CHECKUPDATESBETA_CHK, is_enabled); #endif // !_DEBUG && !_APP_BETA break; @@ -1161,7 +1147,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam #if !defined(_DEBUG) && !defined(_APP_BETA) case IDC_CHECKUPDATESBETA_CHK: { - app.ConfigSet (L"CheckUpdatesBeta", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"CheckUpdatesBeta", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } #endif // !_DEBUG && !_APP_BETA @@ -1176,19 +1162,19 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_CONFIRMEXIT_CHK: { - app.ConfigSet (L"ConfirmExit2", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"ConfirmExit2", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_CONFIRMEXITTIMER_CHK: { - app.ConfigSet (L"ConfirmExitTimer", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"ConfirmExitTimer", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_CONFIRMLOGCLEAR_CHK: { - app.ConfigSet (L"ConfirmLogClear", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"ConfirmLogClear", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } @@ -1217,37 +1203,37 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_BLOCKLIST_EXTRA_ALLOW: case IDC_BLOCKLIST_EXTRA_BLOCK: { - const HMENU hmenu = GetMenu (app.GetHWND ()); + HMENU hmenu = GetMenu (app.GetHWND ()); if (ctrl_id >= IDC_BLOCKLIST_SPY_DISABLE && ctrl_id <= IDC_BLOCKLIST_SPY_BLOCK) { - const INT new_state = std::clamp (_r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_SPY_DISABLE, IDC_BLOCKLIST_SPY_BLOCK) - IDC_BLOCKLIST_SPY_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, _r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_SPY_DISABLE, IDC_BLOCKLIST_SPY_BLOCK) - IDC_BLOCKLIST_SPY_DISABLE, 0, 2); _r_menu_checkitem (hmenu, IDM_BLOCKLIST_SPY_DISABLE, IDM_BLOCKLIST_SPY_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_SPY_DISABLE + new_state); - app.ConfigSet (L"BlocklistSpyState", new_state); + app.ConfigSetInteger (L"BlocklistSpyState", new_state); - _app_ruleblocklistset (app.GetHWND (), new_state, INVALID_INT, INVALID_INT, true); + _app_ruleblocklistset (app.GetHWND (), new_state, INVALID_INT, INVALID_INT, TRUE); } else if (ctrl_id >= IDC_BLOCKLIST_UPDATE_DISABLE && ctrl_id <= IDC_BLOCKLIST_UPDATE_BLOCK) { - const INT new_state = std::clamp (_r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_UPDATE_DISABLE, IDC_BLOCKLIST_UPDATE_BLOCK) - IDC_BLOCKLIST_UPDATE_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, _r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_UPDATE_DISABLE, IDC_BLOCKLIST_UPDATE_BLOCK) - IDC_BLOCKLIST_UPDATE_DISABLE, 0, 2); _r_menu_checkitem (hmenu, IDM_BLOCKLIST_UPDATE_DISABLE, IDM_BLOCKLIST_UPDATE_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_UPDATE_DISABLE + new_state); - app.ConfigSet (L"BlocklistUpdateState", new_state); + app.ConfigSetInteger (L"BlocklistUpdateState", new_state); - _app_ruleblocklistset (app.GetHWND (), INVALID_INT, new_state, INVALID_INT, true); + _app_ruleblocklistset (app.GetHWND (), INVALID_INT, new_state, INVALID_INT, TRUE); } else if (ctrl_id >= IDC_BLOCKLIST_EXTRA_DISABLE && ctrl_id <= IDC_BLOCKLIST_EXTRA_BLOCK) { - const INT new_state = std::clamp (_r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_EXTRA_DISABLE, IDC_BLOCKLIST_EXTRA_BLOCK) - IDC_BLOCKLIST_EXTRA_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, _r_ctrl_isradiobuttonchecked (hwnd, IDC_BLOCKLIST_EXTRA_DISABLE, IDC_BLOCKLIST_EXTRA_BLOCK) - IDC_BLOCKLIST_EXTRA_DISABLE, 0, 2); _r_menu_checkitem (hmenu, IDM_BLOCKLIST_EXTRA_DISABLE, IDM_BLOCKLIST_EXTRA_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_EXTRA_DISABLE + new_state); - app.ConfigSet (L"BlocklistExtraState", new_state); + app.ConfigSetInteger (L"BlocklistExtraState", new_state); - _app_ruleblocklistset (app.GetHWND (), INVALID_INT, INVALID_INT, new_state, true); + _app_ruleblocklistset (app.GetHWND (), INVALID_INT, INVALID_INT, new_state, TRUE); } break; @@ -1255,10 +1241,10 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_ENABLELOG_CHK: { - const bool is_checked = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); - const bool is_enabled = is_checked || (IsDlgButtonChecked (hwnd, IDC_ENABLEUILOG_CHK) == BST_CHECKED); + BOOLEAN is_checked = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + BOOLEAN is_enabled = is_checked || (IsDlgButtonChecked (hwnd, IDC_ENABLEUILOG_CHK) == BST_CHECKED); - app.ConfigSet (L"IsLogEnabled", is_checked); + app.ConfigSetBoolean (L"IsLogEnabled", is_checked); SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_PRESSBUTTON, IDM_TRAY_ENABLELOG_CHK, MAKELPARAM (is_checked, 0)); _r_ctrl_enable (hwnd, IDC_LOGPATH, is_checked); // input @@ -1282,10 +1268,10 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_ENABLEUILOG_CHK: { - const bool is_checked = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); - const bool is_enabled = is_checked || (IsDlgButtonChecked (hwnd, IDC_ENABLELOG_CHK) == BST_CHECKED); + BOOLEAN is_checked = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + BOOLEAN is_enabled = is_checked || (IsDlgButtonChecked (hwnd, IDC_ENABLELOG_CHK) == BST_CHECKED); - app.ConfigSet (L"IsLogUiEnabled", is_checked); + app.ConfigSetBoolean (L"IsLogUiEnabled", is_checked); SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_PRESSBUTTON, IDM_TRAY_ENABLEUILOG_CHK, MAKELPARAM (is_checked, 0)); _r_ctrl_enable (hwnd, IDC_EXCLUDESTEALTH_CHK, is_enabled); @@ -1305,9 +1291,9 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if (!logpath.IsEmpty ()) { - app.ConfigSet (L"LogPath", _r_path_unexpand (logpath)); + app.ConfigSetString (L"LogPath", _r_path_unexpand (logpath)); - _app_loginit (app.ConfigGet (L"IsLogEnabled", false)); + _app_loginit (app.ConfigGetBoolean (L"IsLogEnabled", FALSE)); } } @@ -1319,13 +1305,13 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam OPENFILENAME ofn = {0}; WCHAR path[MAX_PATH] = {0}; - GetDlgItemText (hwnd, IDC_LOGPATH, path, _countof (path)); - _r_str_copy (path, _countof (path), _r_path_expand (path)); + GetDlgItemText (hwnd, IDC_LOGPATH, path, RTL_NUMBER_OF (path)); + _r_str_copy (path, RTL_NUMBER_OF (path), _r_path_expand (path)); ofn.lStructSize = sizeof (ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = path; - ofn.nMaxFile = _countof (path); + ofn.nMaxFile = RTL_NUMBER_OF (path); ofn.lpstrFileTitle = APP_NAME_SHORT; ofn.lpstrFilter = L"*." LOG_PATH_EXT L"\0*." LOG_PATH_EXT L"\0\0"; ofn.lpstrDefExt = LOG_PATH_EXT; @@ -1333,12 +1319,12 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if (GetSaveFileName (&ofn)) { - _r_str_copy (path, _countof (path), _r_path_unexpand (path)); + _r_str_copy (path, RTL_NUMBER_OF (path), _r_path_unexpand (path)); - app.ConfigSet (L"LogPath", path); + app.ConfigSetString (L"LogPath", path); SetDlgItemText (hwnd, IDC_LOGPATH, path); - _app_loginit (app.ConfigGet (L"IsLogEnabled", false)); + _app_loginit (app.ConfigGetBoolean (L"IsLogEnabled", FALSE)); } break; @@ -1351,7 +1337,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam rstring logviewer = _r_ctrl_gettext (hwnd, ctrl_id); if (!logviewer.IsEmpty ()) - app.ConfigSet (L"LogViewer", _r_path_unexpand (logviewer)); + app.ConfigSetString (L"LogViewer", _r_path_unexpand (logviewer)); } break; @@ -1362,13 +1348,13 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam OPENFILENAME ofn = {0}; WCHAR path[MAX_PATH] = {0}; - GetDlgItemText (hwnd, IDC_LOGVIEWER, path, _countof (path)); - _r_str_copy (path, _countof (path), _r_path_expand (path)); + GetDlgItemText (hwnd, IDC_LOGVIEWER, path, RTL_NUMBER_OF (path)); + _r_str_copy (path, RTL_NUMBER_OF (path), _r_path_expand (path)); ofn.lStructSize = sizeof (ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = path; - ofn.nMaxFile = _countof (path); + ofn.nMaxFile = RTL_NUMBER_OF (path); ofn.lpstrFileTitle = APP_NAME_SHORT; ofn.lpstrFilter = L"*.exe\0*.exe\0\0"; ofn.lpstrDefExt = L"exe"; @@ -1376,9 +1362,9 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam if (GetOpenFileName (&ofn)) { - _r_str_copy (path, _countof (path), _r_path_unexpand (path)); + _r_str_copy (path, RTL_NUMBER_OF (path), _r_path_unexpand (path)); - app.ConfigSet (L"LogViewer", path); + app.ConfigSetString (L"LogViewer", path); SetDlgItemText (hwnd, IDC_LOGVIEWER, path); } @@ -1388,16 +1374,16 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_LOGSIZELIMIT_CTRL: { if (notify_code == EN_KILLFOCUS) - app.ConfigSet (L"LogSizeLimitKb", (DWORD)SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_GETPOS32, 0, 0)); + app.ConfigSetUlong (L"LogSizeLimitKb", (DWORD)SendDlgItemMessage (hwnd, IDC_LOGSIZELIMIT, UDM_GETPOS32, 0, 0)); break; } case IDC_ENABLENOTIFICATIONS_CHK: { - const bool is_enabled = !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); + BOOLEAN is_enabled = (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED); - app.ConfigSet (L"IsNotificationsEnabled", is_enabled); + app.ConfigSetBoolean (L"IsNotificationsEnabled", is_enabled); SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_PRESSBUTTON, IDM_TRAY_ENABLENOTIFICATIONS_CHK, MAKELPARAM (is_enabled, 0)); _r_ctrl_enable (hwnd, IDC_NOTIFICATIONSOUND_CHK, is_enabled); @@ -1411,23 +1397,23 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam _r_ctrl_enable (hwnd, IDC_EXCLUDEBLOCKLIST_CHK, is_enabled); _r_ctrl_enable (hwnd, IDC_EXCLUDECUSTOM_CHK, is_enabled); - _app_notifyrefresh (config.hnotification, false); + _app_notifyrefresh (config.hnotification, FALSE); break; } case IDC_NOTIFICATIONSOUND_CHK: { - app.ConfigSet (L"IsNotificationsSound", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsNotificationsSound", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_NOTIFICATIONONTRAY_CHK: { - app.ConfigSet (L"IsNotificationsOnTray", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsNotificationsOnTray", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); if (IsWindowVisible (config.hnotification)) - _app_notifysetpos (config.hnotification, true); + _app_notifysetpos (config.hnotification, TRUE); break; } @@ -1435,32 +1421,32 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam case IDC_NOTIFICATIONTIMEOUT_CTRL: { if (notify_code == EN_KILLFOCUS) - app.ConfigSet (L"NotificationsTimeout", (time_t)SendDlgItemMessage (hwnd, IDC_NOTIFICATIONTIMEOUT, UDM_GETPOS32, 0, 0)); + app.ConfigSetUlong (L"NotificationsTimeout", (DWORD)SendDlgItemMessage (hwnd, IDC_NOTIFICATIONTIMEOUT, UDM_GETPOS32, 0, 0)); break; } case IDC_EXCLUDESTEALTH_CHK: { - app.ConfigSet (L"IsExcludeStealth", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsExcludeStealth", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_EXCLUDECLASSIFYALLOW_CHK: { - app.ConfigSet (L"IsExcludeClassifyAllow", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsExcludeClassifyAllow", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_EXCLUDEBLOCKLIST_CHK: { - app.ConfigSet (L"IsExcludeBlocklist", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsExcludeBlocklist", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } case IDC_EXCLUDECUSTOM_CHK: { - app.ConfigSet (L"IsExcludeCustomRules", !!(IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); + app.ConfigSetBoolean (L"IsExcludeCustomRules", (IsDlgButtonChecked (hwnd, ctrl_id) == BST_CHECKED)); break; } } @@ -1472,7 +1458,7 @@ INT_PTR CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam return FALSE; } -void _app_resizewindow (HWND hwnd, LPARAM lparam) +VOID _app_resizewindow (HWND hwnd, LPARAM lparam) { SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_AUTOSIZE, 0, 0); SendDlgItemMessage (hwnd, IDC_STATUSBAR, WM_SIZE, 0, 0); @@ -1480,31 +1466,31 @@ void _app_resizewindow (HWND hwnd, LPARAM lparam) RECT rc = {0}; GetClientRect (GetDlgItem (hwnd, IDC_STATUSBAR), &rc); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - const INT statusbar_height = _R_RECT_HEIGHT (&rc); - const INT rebar_height = (INT)SendDlgItemMessage (hwnd, IDC_REBAR, RB_GETBARHEIGHT, 0, 0); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT statusbar_height = _r_calc_rectheight (INT, &rc); + INT rebar_height = (INT)SendDlgItemMessage (hwnd, IDC_REBAR, RB_GETBARHEIGHT, 0, 0); HDWP hdefer = BeginDeferWindowPos (2); - hdefer = DeferWindowPos (hdefer, config.hrebar, nullptr, 0, 0, LOWORD (lparam), rebar_height, SWP_NOZORDER | SWP_NOOWNERZORDER); - hdefer = DeferWindowPos (hdefer, GetDlgItem (hwnd, IDC_TAB), nullptr, 0, rebar_height, LOWORD (lparam), HIWORD (lparam) - rebar_height - statusbar_height, SWP_NOZORDER | SWP_NOOWNERZORDER); + hdefer = DeferWindowPos (hdefer, config.hrebar, NULL, 0, 0, LOWORD (lparam), rebar_height, SWP_NOZORDER | SWP_NOOWNERZORDER); + hdefer = DeferWindowPos (hdefer, GetDlgItem (hwnd, IDC_TAB), NULL, 0, rebar_height, LOWORD (lparam), HIWORD (lparam) - rebar_height - statusbar_height, SWP_NOZORDER | SWP_NOOWNERZORDER); EndDeferWindowPos (hdefer); if (listview_id) { _r_tab_adjustchild (hwnd, IDC_TAB, GetDlgItem (hwnd, listview_id)); - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); } _app_refreshstatus (hwnd, 0); } -void _app_imagelist_init (HWND hwnd) +VOID _app_imagelist_init (HWND hwnd) { - const INT icon_size_small = _r_dc_getsystemmetrics (hwnd, SM_CXSMICON); - const INT icon_size_large = _r_dc_getsystemmetrics (hwnd, SM_CXICON); - const INT icon_size_toolbar = std::clamp (_r_dc_getdpi (hwnd, app.ConfigGet (L"ToolbarSize", _R_SIZE_ITEMHEIGHT).AsInt ()), icon_size_small, icon_size_large); + INT icon_size_small = _r_dc_getsystemmetrics (hwnd, SM_CXSMICON); + INT icon_size_large = _r_dc_getsystemmetrics (hwnd, SM_CXICON); + INT icon_size_toolbar = _r_calc_clamp (INT, _r_dc_getdpi (hwnd, app.ConfigGetInteger (L"ToolbarSize", _R_SIZE_ITEMHEIGHT)), icon_size_small, icon_size_large); SAFE_DELETE_OBJECT (config.hbmp_enable); SAFE_DELETE_OBJECT (config.hbmp_disable); @@ -1520,14 +1506,14 @@ void _app_imagelist_init (HWND hwnd) SAFE_DELETE_ICON (config.hicon_package); // get default icon for executable - _app_getfileicon (_r_path_expand (PATH_NTOSKRNL), false, &config.icon_id, &config.hicon_large); - _app_getfileicon (_r_path_expand (PATH_NTOSKRNL), true, nullptr, &config.hicon_small); - _app_getfileicon (_r_path_expand (PATH_SHELL32), false, &config.icon_service_id, nullptr); + _app_getfileicon (_r_path_expand (PATH_NTOSKRNL), FALSE, &config.icon_id, &config.hicon_large); + _app_getfileicon (_r_path_expand (PATH_NTOSKRNL), TRUE, NULL, &config.hicon_small); + _app_getfileicon (_r_path_expand (PATH_SHELL32), FALSE, &config.icon_service_id, NULL); // get default icon for windows store package (win8+) if (_r_sys_validversion (6, 2)) { - if (!_app_getfileicon (_r_path_expand (PATH_WINSTORE), true, &config.icon_uwp_id, &config.hicon_package)) + if (!_app_getfileicon (_r_path_expand (PATH_WINSTORE), TRUE, &config.icon_uwp_id, &config.hicon_package)) { config.icon_uwp_id = config.icon_id; config.hicon_package = CopyIcon (config.hicon_small); @@ -1553,17 +1539,17 @@ void _app_imagelist_init (HWND hwnd) if (config.himg_toolbar) { - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SHIELD_ENABLE), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SHIELD_DISABLE), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_REFRESH), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SETTINGS), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_NOTIFICATIONS), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOG), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGOPEN), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGCLEAR), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ADD), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_HEARTH), icon_size_toolbar), nullptr); - ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGUI), icon_size_toolbar), nullptr); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SHIELD_ENABLE), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SHIELD_DISABLE), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_REFRESH), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_SETTINGS), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_NOTIFICATIONS), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOG), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGOPEN), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGCLEAR), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ADD), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_DONATE), icon_size_toolbar), NULL); + ImageList_Add (config.himg_toolbar, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_LOGUI), icon_size_toolbar), NULL); } // rules imagelist (small) @@ -1574,8 +1560,8 @@ void _app_imagelist_init (HWND hwnd) if (config.himg_rules_small) { - ImageList_Add (config.himg_rules_small, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ALLOW), icon_size_small), nullptr); - ImageList_Add (config.himg_rules_small, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_BLOCK), icon_size_small), nullptr); + ImageList_Add (config.himg_rules_small, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ALLOW), icon_size_small), NULL); + ImageList_Add (config.himg_rules_small, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_BLOCK), icon_size_small), NULL); } // rules imagelist (large) @@ -1586,12 +1572,12 @@ void _app_imagelist_init (HWND hwnd) if (config.himg_rules_large) { - ImageList_Add (config.himg_rules_large, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ALLOW), icon_size_large), nullptr); - ImageList_Add (config.himg_rules_large, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_BLOCK), icon_size_large), nullptr); + ImageList_Add (config.himg_rules_large, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_ALLOW), icon_size_large), NULL); + ImageList_Add (config.himg_rules_large, _app_bitmapfrompng (app.GetHINSTANCE (), MAKEINTRESOURCE (IDP_BLOCK), icon_size_large), NULL); } } -void _app_toolbar_init (HWND hwnd) +VOID _app_toolbar_init (HWND hwnd) { config.hrebar = GetDlgItem (hwnd, IDC_REBAR); @@ -1599,20 +1585,20 @@ void _app_toolbar_init (HWND hwnd) SendDlgItemMessage (hwnd, IDC_TOOLBAR, TB_SETIMAGELIST, 0, (LPARAM)config.himg_toolbar); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_START, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_START, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, I_IMAGENONE); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP, NULL, 0, I_IMAGENONE); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_OPENRULESEDITOR, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 8); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP, NULL, 0, I_IMAGENONE); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 4); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 5); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 10); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP, NULL, 0, I_IMAGENONE); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_REFRESH, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 2); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_SETTINGS, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 3); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP, NULL, 0, I_IMAGENONE); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_LOGSHOW, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 6); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_TRAY_LOGCLEAR, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 7); - _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP); + _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, 0, BTNS_SEP, NULL, 0, I_IMAGENONE); _r_toolbar_addbutton (hwnd, IDC_TOOLBAR, IDM_DONATE, 0, BTNS_BUTTON | BTNS_AUTOSIZE, TBSTATE_ENABLED, 9); REBARBANDINFO rbi = {0}; @@ -1625,7 +1611,7 @@ void _app_toolbar_init (HWND hwnd) SendMessage (config.hrebar, RB_INSERTBAND, 0, (LPARAM)&rbi); } -void _app_toolbar_resize () +VOID _app_toolbar_resize () { REBARBANDINFO rbi = {0}; @@ -1633,7 +1619,7 @@ void _app_toolbar_resize () SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_AUTOSIZE, 0, 0); - const DWORD button_size = (DWORD)SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_GETBUTTONSIZE, 0, 0); + DWORD button_size = (DWORD)SendDlgItemMessage (config.hrebar, IDC_TOOLBAR, TB_GETBUTTONSIZE, 0, 0); if (button_size) { @@ -1654,52 +1640,52 @@ void _app_toolbar_resize () SendMessage (config.hrebar, RB_SETBANDINFO, 0, (LPARAM)&rbi); } -void _app_tabs_init (HWND hwnd) +VOID _app_tabs_init (HWND hwnd) { RECT rc = {0}; GetClientRect (hwnd, &rc); - SetWindowPos (GetDlgItem (hwnd, IDC_TAB), nullptr, 0, 0, _R_RECT_WIDTH (&rc), _R_RECT_HEIGHT (&rc), SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); + SetWindowPos (GetDlgItem (hwnd, IDC_TAB), NULL, 0, 0, _r_calc_rectwidth (INT, &rc), _r_calc_rectheight (INT, &rc), SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); - const HINSTANCE hinst = app.GetHINSTANCE (); - const DWORD listview_ex_style = LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP | LVS_EX_CHECKBOXES | LVS_EX_HEADERINALLVIEWS; - const DWORD listview_style = WS_CHILD | WS_TABSTOP | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE; + HINSTANCE hinst = app.GetHINSTANCE (); + DWORD listview_ex_style = LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP | LVS_EX_CHECKBOXES | LVS_EX_HEADERINALLVIEWS; + DWORD listview_style = WS_CHILD | WS_TABSTOP | LVS_SHOWSELALWAYS | LVS_REPORT | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE; INT tabs_count = 0; - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_PROFILE, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_APPS, nullptr), INVALID_INT, IDC_APPS_PROFILE); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_PROFILE, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_APPS, NULL), I_IMAGENONE, IDC_APPS_PROFILE); - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_SERVICE, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_SERVICES, nullptr), INVALID_INT, IDC_APPS_SERVICE); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_SERVICE, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_SERVICES, NULL), I_IMAGENONE, IDC_APPS_SERVICE); // uwp apps (win8+) if (_r_sys_validversion (6, 2)) { - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_UWP, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_PACKAGES, nullptr), INVALID_INT, IDC_APPS_UWP); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_APPS_UWP, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_PACKAGES, NULL), I_IMAGENONE, IDC_APPS_UWP); } - if (!app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) + if (!app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) { - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_BLOCKLIST, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_BLOCKLIST_RULES, nullptr), INVALID_INT, IDC_RULES_BLOCKLIST); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_BLOCKLIST, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_BLOCKLIST_RULES, NULL), I_IMAGENONE, IDC_RULES_BLOCKLIST); - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_SYSTEM, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_SYSTEM_RULES, nullptr), INVALID_INT, IDC_RULES_SYSTEM); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_SYSTEM, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_SYSTEM_RULES, NULL), I_IMAGENONE, IDC_RULES_SYSTEM); } - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_CUSTOM, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_USER_RULES, nullptr), INVALID_INT, IDC_RULES_CUSTOM); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_RULES_CUSTOM, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TRAY_USER_RULES, NULL), I_IMAGENONE, IDC_RULES_CUSTOM); - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_NETWORK, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_NETWORK, nullptr), INVALID_INT, IDC_NETWORK); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_NETWORK, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TAB_NETWORK, NULL), I_IMAGENONE, IDC_NETWORK); - CreateWindowEx (0, WC_LISTVIEW, nullptr, listview_style | LVS_NOSORTHEADER, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_LOG, hinst, nullptr); - _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TITLE_LOGGING, nullptr), INVALID_INT, IDC_LOG); + CreateWindowEx (0, WC_LISTVIEW, NULL, listview_style | LVS_NOSORTHEADER, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_LOG, hinst, NULL); + _r_tab_additem (hwnd, IDC_TAB, tabs_count++, app.LocaleString (IDS_TITLE_LOGGING, NULL), I_IMAGENONE, IDC_LOG); for (INT i = 0; i < tabs_count; i++) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); if (!listview_id) continue; @@ -1709,7 +1695,7 @@ void _app_tabs_init (HWND hwnd) if (!hlistview) continue; - _app_listviewsetfont (hwnd, listview_id, false); + _app_listviewsetfont (hwnd, listview_id, FALSE); if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_RULES_CUSTOM) { @@ -1717,14 +1703,14 @@ void _app_tabs_init (HWND hwnd) if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { - _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0, LVCFMT_LEFT); - _r_listview_addcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDED, nullptr), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0, LVCFMT_LEFT); + _r_listview_addcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDED, NULL), 0, LVCFMT_RIGHT); } else { - _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0, LVCFMT_LEFT); - _r_listview_addcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_PROTOCOL, nullptr), 0, LVCFMT_RIGHT); - _r_listview_addcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_DIRECTION, nullptr), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0, LVCFMT_LEFT); + _r_listview_addcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_PROTOCOL, NULL), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_DIRECTION, NULL), 0, LVCFMT_RIGHT); } _r_listview_addgroup (hwnd, listview_id, 0, L"", 0, LVGS_COLLAPSIBLE, LVGS_COLLAPSIBLE); @@ -1735,21 +1721,22 @@ void _app_tabs_init (HWND hwnd) { _r_listview_setstyle (hwnd, listview_id, listview_ex_style & ~LVS_EX_CHECKBOXES, FALSE); // no checkboxes - _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0, LVCFMT_LEFT); + _r_listview_addcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0, LVCFMT_LEFT); _r_listview_addcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0, LVCFMT_LEFT); _r_listview_addcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0, LVCFMT_RIGHT); _r_listview_addcolumn (hwnd, listview_id, 3, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0, LVCFMT_LEFT); _r_listview_addcolumn (hwnd, listview_id, 4, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0, LVCFMT_RIGHT); - _r_listview_addcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, nullptr), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, NULL), 0, LVCFMT_RIGHT); if (listview_id == IDC_NETWORK) { - _r_listview_addcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_STATE, nullptr), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_STATE, NULL), 0, LVCFMT_RIGHT); } else if (listview_id == IDC_LOG) { - _r_listview_addcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_DIRECTION, nullptr), 0, LVCFMT_RIGHT); - _r_listview_addcolumn (hwnd, listview_id, 7, app.LocaleString (IDS_STATE, nullptr), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_FILTER, NULL), 0, LVCFMT_LEFT); + _r_listview_addcolumn (hwnd, listview_id, 7, app.LocaleString (IDS_DIRECTION, NULL), 0, LVCFMT_RIGHT); + _r_listview_addcolumn (hwnd, listview_id, 8, app.LocaleString (IDS_STATE, NULL), 0, LVCFMT_RIGHT); } } @@ -1759,9 +1746,14 @@ void _app_tabs_init (HWND hwnd) } } -void _app_initialize () +LPVOID allocate_pugixml (size_t size) { - pugi::set_memory_management_functions (&_r_mem_alloc, &_r_mem_free); // set allocation routine + return _r_mem_allocatezero (size); +} + +VOID _app_initialize () +{ + pugi::set_memory_management_functions (&allocate_pugixml, &_r_mem_free); // set allocation routine // initialize spinlocks _r_fastlock_initialize (&lock_apply); @@ -1780,19 +1772,19 @@ void _app_initialize () SE_DEBUG_PRIVILEGE, }; - _r_sys_setprivilege (privileges, _countof (privileges), true); + _r_sys_setprivilege (privileges, RTL_NUMBER_OF (privileges), TRUE); } // set process priority SetPriorityClass (NtCurrentProcess (), ABOVE_NORMAL_PRIORITY_CLASS); // static initializer - config.wd_length = GetWindowsDirectory (config.windows_dir, _countof (config.windows_dir)); + config.wd_length = GetWindowsDirectory (config.windows_dir, RTL_NUMBER_OF (config.windows_dir)); - _r_str_printf (config.profile_path, _countof (config.profile_path), L"%s\\" XML_PROFILE, app.GetProfileDirectory ()); - _r_str_printf (config.profile_internal_path, _countof (config.profile_internal_path), L"%s\\" XML_PROFILE_INTERNAL, app.GetProfileDirectory ()); + _r_str_printf (config.profile_path, RTL_NUMBER_OF (config.profile_path), L"%s\\" XML_PROFILE, app.GetProfileDirectory ()); + _r_str_printf (config.profile_internal_path, RTL_NUMBER_OF (config.profile_internal_path), L"%s\\" XML_PROFILE_INTERNAL, app.GetProfileDirectory ()); - _r_str_copy (config.profile_path_backup, _countof (config.profile_path_backup), _r_fmt (L"%s.bak", config.profile_path)); + _r_str_copy (config.profile_path_backup, RTL_NUMBER_OF (config.profile_path_backup), _r_fmt (L"%s.bak", config.profile_path)); config.ntoskrnl_hash = _r_str_hash (PROC_SYSTEM_NAME); config.svchost_hash = _r_str_hash (_r_path_expand (PATH_SVCHOST)); @@ -1819,7 +1811,7 @@ void _app_initialize () // initialize thread objects if (!config.done_evt) - config.done_evt = CreateEventEx (nullptr, nullptr, 0, EVENT_ALL_ACCESS); + config.done_evt = CreateEventEx (NULL, NULL, 0, EVENT_ALL_ACCESS); _app_generate_credentials (); } @@ -1843,27 +1835,27 @@ INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { if (msg == WM_FINDMSGSTRING) { - const LPFINDREPLACE lpfr = (LPFINDREPLACE)lparam; + LPFINDREPLACE lpfr = (LPFINDREPLACE)lparam; if ((lpfr->Flags & FR_DIALOGTERM) != 0) { - config.hfind = nullptr; + config.hfind = NULL; } else if ((lpfr->Flags & FR_FINDNEXT) != 0) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (!listview_id) return FALSE; - const INT total_count = _r_listview_getitemcount (hwnd, listview_id); + INT total_count = _r_listview_getitemcount (hwnd, listview_id, FALSE); if (!total_count) return FALSE; - bool is_wrap = true; + BOOLEAN is_wrap = TRUE; - const INT selected_item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); + INT selected_item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); INT current_item = selected_item + 1; INT last_item = total_count; @@ -1872,24 +1864,24 @@ find_wrap: for (; current_item < last_item; current_item++) { - const rstring item_text = _r_listview_getitemtext (hwnd, listview_id, current_item, 0); + rstring item_text = _r_listview_getitemtext (hwnd, listview_id, current_item, 0); if (item_text.IsEmpty ()) continue; - if (StrStrNIW (item_text, lpfr->lpstrFindWhat, (UINT)item_text.GetLength ()) != nullptr) + if (StrStrNIW (item_text, lpfr->lpstrFindWhat, (UINT)item_text.GetLength ()) != NULL) { - _app_showitem (hwnd, listview_id, current_item); + _app_showitem (hwnd, listview_id, current_item, INVALID_INT); return FALSE; } } if (is_wrap) { - is_wrap = false; + is_wrap = FALSE; current_item = 0; - last_item = (std::min) (selected_item + 1, total_count); + last_item = min (selected_item + 1, total_count); goto find_wrap; } @@ -1918,7 +1910,7 @@ find_wrap: app.SettingsAddPage (IDD_SETTINGS_HIGHLIGHTING, IDS_TITLE_HIGHLIGHTING); app.SettingsAddPage (IDD_SETTINGS_RULES, IDS_TRAY_RULES); - if (!app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) + if (!app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) app.SettingsAddPage (IDD_SETTINGS_BLOCKLIST, IDS_TRAY_BLOCKLIST_RULES); // dropped packets logging (win7+) @@ -1926,16 +1918,16 @@ find_wrap: app.SettingsAddPage (IDD_SETTINGS_LOGGING, IDS_TITLE_LOGGING); // initialize colors - addcolor (IDS_HIGHLIGHT_TIMER, L"IsHighlightTimer", true, L"ColorTimer", LISTVIEW_COLOR_TIMER); - addcolor (IDS_HIGHLIGHT_INVALID, L"IsHighlightInvalid", true, L"ColorInvalid", LISTVIEW_COLOR_INVALID); - addcolor (IDS_HIGHLIGHT_SPECIAL, L"IsHighlightSpecial", true, L"ColorSpecial", LISTVIEW_COLOR_SPECIAL); - addcolor (IDS_HIGHLIGHT_SILENT, L"IsHighlightSilent", true, L"ColorSilent", LISTVIEW_COLOR_SILENT); - addcolor (IDS_HIGHLIGHT_SIGNED, L"IsHighlightSigned", true, L"ColorSigned", LISTVIEW_COLOR_SIGNED); - addcolor (IDS_HIGHLIGHT_PICO, L"IsHighlightPico", true, L"ColorPico", LISTVIEW_COLOR_PICO); - addcolor (IDS_HIGHLIGHT_SYSTEM, L"IsHighlightSystem", true, L"ColorSystem", LISTVIEW_COLOR_SYSTEM); - addcolor (IDS_HIGHLIGHT_SERVICE, L"IsHighlightService", true, L"ColorService", LISTVIEW_COLOR_SERVICE); - addcolor (IDS_HIGHLIGHT_PACKAGE, L"IsHighlightPackage", true, L"ColorPackage", LISTVIEW_COLOR_PACKAGE); - addcolor (IDS_HIGHLIGHT_CONNECTION, L"IsHighlightConnection", true, L"ColorConnection", LISTVIEW_COLOR_CONNECTION); + addcolor (IDS_HIGHLIGHT_TIMER, L"IsHighlightTimer", TRUE, L"ColorTimer", LISTVIEW_COLOR_TIMER); + addcolor (IDS_HIGHLIGHT_INVALID, L"IsHighlightInvalid", TRUE, L"ColorInvalid", LISTVIEW_COLOR_INVALID); + addcolor (IDS_HIGHLIGHT_SPECIAL, L"IsHighlightSpecial", TRUE, L"ColorSpecial", LISTVIEW_COLOR_SPECIAL); + addcolor (IDS_HIGHLIGHT_SILENT, L"IsHighlightSilent", TRUE, L"ColorSilent", LISTVIEW_COLOR_SILENT); + addcolor (IDS_HIGHLIGHT_SIGNED, L"IsHighlightSigned", TRUE, L"ColorSigned", LISTVIEW_COLOR_SIGNED); + addcolor (IDS_HIGHLIGHT_PICO, L"IsHighlightPico", TRUE, L"ColorPico", LISTVIEW_COLOR_PICO); + addcolor (IDS_HIGHLIGHT_SYSTEM, L"IsHighlightSystem", TRUE, L"ColorSystem", LISTVIEW_COLOR_SYSTEM); + addcolor (IDS_HIGHLIGHT_SERVICE, L"IsHighlightService", TRUE, L"ColorService", LISTVIEW_COLOR_SERVICE); + addcolor (IDS_HIGHLIGHT_PACKAGE, L"IsHighlightPackage", TRUE, L"ColorPackage", LISTVIEW_COLOR_PACKAGE); + addcolor (IDS_HIGHLIGHT_CONNECTION, L"IsHighlightConnection", TRUE, L"ColorConnection", LISTVIEW_COLOR_CONNECTION); // restore window size and position (required!) app.RestoreWindowPosition (hwnd, L"window"); @@ -1955,14 +1947,14 @@ find_wrap: #endif // _APP_NO_DARKTHEME // load profile - _app_profile_load (hwnd); + _app_profile_load (hwnd, NULL); // add blocklist to update - if (!app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) - app.UpdateAddComponent (L"Internal rules", L"profile_internal", _r_fmt (L"%" PRIi64, config.profile_internal_timestamp), config.profile_internal_path, false); + if (!app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) + app.UpdateAddComponent (L"Internal rules", L"profile_internal", _r_fmt (L"%" TEXT (PR_LONG64), config.profile_internal_timestamp), config.profile_internal_path, FALSE); // initialize tab - _app_settab_id (hwnd, app.ConfigGet (L"CurrentTab", IDC_APPS_PROFILE).AsInt ()); + _app_settab_id (hwnd, app.ConfigGetInteger (L"CurrentTab", IDC_APPS_PROFILE)); // initialize dropped packets log callback thread (win7+) RtlSecureZeroMemory (&log_stack, sizeof (log_stack)); @@ -1972,37 +1964,37 @@ find_wrap: _app_notifycreatewindow (); // create network monitor thread - _r_sys_createthread (&NetworkMonitorThread, (LPVOID)hwnd, false, THREAD_PRIORITY_LOWEST); + _r_sys_createthreadex (&NetworkMonitorThread, (LPVOID)hwnd, FALSE, THREAD_PRIORITY_LOWEST); // install filters { - EnumInstall install_type = _wfp_isfiltersinstalled (); + ENUM_INSTALL_TYPE install_type = _wfp_isfiltersinstalled (); if (install_type != InstallDisabled) { if (install_type == InstallEnabledTemporary) - config.is_filterstemporary = true; + config.is_filterstemporary = TRUE; - //if (app.ConfigGet (L"IsDisableWindowsFirewallChecked", true).AsBool ()) - // _mps_changeconfig2 (false); + //if (app.ConfigGetBoolean (L"IsDisableWindowsFirewallChecked", TRUE)) + // _mps_changeconfig2 (FALSE); - _app_changefilters (hwnd, true, true); + _app_changefilters (hwnd, TRUE, TRUE); } else { - _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), nullptr)); + _r_status_settext (hwnd, IDC_STATUSBAR, 0, app.LocaleString (_app_getinterfacestatelocale (install_type), NULL)); } } // set column size when "auto-size" option are disabled - if (!app.ConfigGet (L"AutoSizeColumns", true).AsBool ()) + if (!app.ConfigGetBoolean (L"AutoSizeColumns", TRUE)) { for (INT i = 0; i < (INT)SendDlgItemMessage (hwnd, IDC_TAB, TCM_GETITEMCOUNT, 0, 0); i++) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); if (listview_id) - _app_listviewresize (hwnd, listview_id, true); + _app_listviewresize (hwnd, listview_id, TRUE); } } @@ -2017,23 +2009,23 @@ find_wrap: case RM_INITIALIZE: { - _r_tray_create (hwnd, UID, WM_TRAYICON, app.GetSharedImage (app.GetHINSTANCE (), (_wfp_isfiltersinstalled () != InstallDisabled) ? IDI_ACTIVE : IDI_INACTIVE, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)), APP_NAME, false); + _r_tray_create (hwnd, UID, WM_TRAYICON, app.GetSharedImage (app.GetHINSTANCE (), (_wfp_isfiltersinstalled () != InstallDisabled) ? IDI_ACTIVE : IDI_INACTIVE, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)), APP_NAME, FALSE); - const HMENU hmenu = GetMenu (hwnd); + HMENU hmenu = GetMenu (hwnd); if (hmenu) { - if (app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) - _r_menu_enableitem (hmenu, 4, MF_BYPOSITION, false); + if (app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) + _r_menu_enableitem (hmenu, 4, MF_BYPOSITION, FALSE); - _r_menu_checkitem (hmenu, IDM_ALWAYSONTOP_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"AlwaysOnTop", _APP_ALWAYSONTOP).AsBool ()); - _r_menu_checkitem (hmenu, IDM_SHOWFILENAMESONLY_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"ShowFilenames", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_AUTOSIZECOLUMNS_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"AutoSizeColumns", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_ENABLESPECIALGROUP_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsEnableSpecialGroup", true).AsBool ()); + _r_menu_checkitem (hmenu, IDM_ALWAYSONTOP_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"AlwaysOnTop", _APP_ALWAYSONTOP)); + _r_menu_checkitem (hmenu, IDM_SHOWFILENAMESONLY_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"ShowFilenames", TRUE)); + _r_menu_checkitem (hmenu, IDM_AUTOSIZECOLUMNS_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"AutoSizeColumns", TRUE)); + _r_menu_checkitem (hmenu, IDM_ENABLESPECIALGROUP_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsEnableSpecialGroup", TRUE)); { UINT menu_id; - const INT view_type = std::clamp (app.ConfigGet (L"ViewType", LV_VIEW_DETAILS).AsInt (), LV_VIEW_ICON, LV_VIEW_MAX); + INT view_type = _r_calc_clamp (INT, app.ConfigGetInteger (L"ViewType", LV_VIEW_DETAILS), LV_VIEW_ICON, LV_VIEW_MAX); if (view_type == LV_VIEW_ICON) menu_id = IDM_VIEW_ICON; @@ -2049,7 +2041,7 @@ find_wrap: { UINT menu_id; - const INT icon_size = std::clamp (app.ConfigGet (L"IconSize", SHIL_SYSSMALL).AsInt (), SHIL_LARGE, SHIL_LAST); + INT icon_size = _r_calc_clamp (INT, app.ConfigGetInteger (L"IconSize", SHIL_SYSSMALL), SHIL_LARGE, SHIL_LAST); if (icon_size == SHIL_EXTRALARGE) menu_id = IDM_SIZE_EXTRALARGE; @@ -2063,29 +2055,29 @@ find_wrap: _r_menu_checkitem (hmenu, IDM_SIZE_SMALL, IDM_SIZE_EXTRALARGE, MF_BYCOMMAND, menu_id); } - _r_menu_checkitem (hmenu, IDM_ICONSISHIDDEN, 0, MF_BYCOMMAND, app.ConfigGet (L"IsIconsHidden", false).AsBool ()); + _r_menu_checkitem (hmenu, IDM_ICONSISHIDDEN, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsIconsHidden", FALSE)); - _r_menu_checkitem (hmenu, IDM_RULE_BLOCKOUTBOUND, 0, MF_BYCOMMAND, app.ConfigGet (L"BlockOutboundConnections", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_RULE_BLOCKINBOUND, 0, MF_BYCOMMAND, app.ConfigGet (L"BlockInboundConnections", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_RULE_ALLOWLOOPBACK, 0, MF_BYCOMMAND, app.ConfigGet (L"AllowLoopbackConnections", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_RULE_ALLOW6TO4, 0, MF_BYCOMMAND, app.ConfigGet (L"AllowIPv6", true).AsBool ()); + _r_menu_checkitem (hmenu, IDM_RULE_BLOCKOUTBOUND, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"BlockOutboundConnections", TRUE)); + _r_menu_checkitem (hmenu, IDM_RULE_BLOCKINBOUND, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"BlockInboundConnections", TRUE)); + _r_menu_checkitem (hmenu, IDM_RULE_ALLOWLOOPBACK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"AllowLoopbackConnections", TRUE)); + _r_menu_checkitem (hmenu, IDM_RULE_ALLOW6TO4, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"AllowIPv6", TRUE)); - _r_menu_checkitem (hmenu, IDM_SECUREFILTERS_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsSecureFilters", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_USESTEALTHMODE_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"UseStealthMode", true).AsBool ()); - _r_menu_checkitem (hmenu, IDM_INSTALLBOOTTIMEFILTERS_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"InstallBoottimeFilters", true).AsBool ()); + _r_menu_checkitem (hmenu, IDM_SECUREFILTERS_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsSecureFilters", TRUE)); + _r_menu_checkitem (hmenu, IDM_USESTEALTHMODE_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"UseStealthMode", TRUE)); + _r_menu_checkitem (hmenu, IDM_INSTALLBOOTTIMEFILTERS_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"InstallBoottimeFilters", TRUE)); - _r_menu_checkitem (hmenu, IDM_USECERTIFICATES_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsCertificatesEnabled", false).AsBool ()); - _r_menu_checkitem (hmenu, IDM_USENETWORKRESOLUTION_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsNetworkResolutionsEnabled", false).AsBool ()); - _r_menu_checkitem (hmenu, IDM_USEREFRESHDEVICES_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsRefreshDevices", true).AsBool ()); + _r_menu_checkitem (hmenu, IDM_USECERTIFICATES_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE)); + _r_menu_checkitem (hmenu, IDM_USENETWORKRESOLUTION_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsNetworkResolutionsEnabled", FALSE)); + _r_menu_checkitem (hmenu, IDM_USEREFRESHDEVICES_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsRefreshDevices", TRUE)); - _r_menu_checkitem (hmenu, IDM_BLOCKLIST_SPY_DISABLE, IDM_BLOCKLIST_SPY_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_SPY_DISABLE + std::clamp (app.ConfigGet (L"BlocklistSpyState", 2).AsInt (), 0, 2)); - _r_menu_checkitem (hmenu, IDM_BLOCKLIST_UPDATE_DISABLE, IDM_BLOCKLIST_UPDATE_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_UPDATE_DISABLE + std::clamp (app.ConfigGet (L"BlocklistUpdateState", 0).AsInt (), 0, 2)); - _r_menu_checkitem (hmenu, IDM_BLOCKLIST_EXTRA_DISABLE, IDM_BLOCKLIST_EXTRA_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_EXTRA_DISABLE + std::clamp (app.ConfigGet (L"BlocklistExtraState", 0).AsInt (), 0, 2)); + _r_menu_checkitem (hmenu, IDM_BLOCKLIST_SPY_DISABLE, IDM_BLOCKLIST_SPY_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_SPY_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistSpyState", 2), 0, 2)); + _r_menu_checkitem (hmenu, IDM_BLOCKLIST_UPDATE_DISABLE, IDM_BLOCKLIST_UPDATE_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_UPDATE_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistUpdateState", 0), 0, 2)); + _r_menu_checkitem (hmenu, IDM_BLOCKLIST_EXTRA_DISABLE, IDM_BLOCKLIST_EXTRA_BLOCK, MF_BYCOMMAND, IDM_BLOCKLIST_EXTRA_DISABLE + _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistExtraState", 0), 0, 2)); } - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, nullptr, 0, app.ConfigGet (L"IsNotificationsEnabled", true).AsBool () ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, nullptr, 0, app.ConfigGet (L"IsLogEnabled", false).AsBool () ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, nullptr, 0, app.ConfigGet (L"IsLogUiEnabled", true).AsBool () ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, NULL, 0, app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE) ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, NULL, 0, app.ConfigGetBoolean (L"IsLogEnabled", FALSE) ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, NULL, 0, app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE) ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); break; } @@ -2098,120 +2090,122 @@ find_wrap: case RM_LOCALIZE: { - const HMENU hmenu = GetMenu (hwnd); + HMENU hmenu = GetMenu (hwnd); if (hmenu) { - app.LocaleMenu (hmenu, IDS_FILE, 0, true, nullptr); - app.LocaleMenu (hmenu, IDS_SETTINGS, IDM_SETTINGS, false, L"...\tF2"); - app.LocaleMenu (hmenu, IDS_ADD_FILE, IDM_ADD_FILE, false, L"..."); - app.LocaleMenu (GetSubMenu (hmenu, 0), IDS_EXPORT, 5, true, nullptr); - app.LocaleMenu (GetSubMenu (hmenu, 0), IDS_IMPORT, 6, true, nullptr); - app.LocaleMenu (hmenu, IDS_IMPORT, IDM_IMPORT, false, L"...\tCtrl+O"); - app.LocaleMenu (hmenu, IDS_EXPORT, IDM_EXPORT, false, L"...\tCtrl+S"); - app.LocaleMenu (hmenu, IDS_EXIT, IDM_EXIT, false, nullptr); + app.LocaleMenu (hmenu, IDS_FILE, 0, TRUE, NULL); + app.LocaleMenu (hmenu, IDS_SETTINGS, IDM_SETTINGS, FALSE, L"...\tF2"); + app.LocaleMenu (hmenu, IDS_ADD_FILE, IDM_ADD_FILE, FALSE, L"..."); + app.LocaleMenu (GetSubMenu (hmenu, 0), IDS_EXPORT, 5, TRUE, NULL); + app.LocaleMenu (GetSubMenu (hmenu, 0), IDS_IMPORT, 6, TRUE, NULL); + app.LocaleMenu (hmenu, IDS_IMPORT, IDM_IMPORT, FALSE, L"...\tCtrl+O"); + app.LocaleMenu (hmenu, IDS_EXPORT, IDM_EXPORT, FALSE, L"...\tCtrl+S"); + app.LocaleMenu (hmenu, IDS_EXIT, IDM_EXIT, FALSE, NULL); - app.LocaleMenu (hmenu, IDS_EDIT, 1, true, nullptr); + app.LocaleMenu (hmenu, IDS_EDIT, 1, TRUE, NULL); - app.LocaleMenu (hmenu, IDS_PURGE_UNUSED, IDM_PURGE_UNUSED, false, L"\tCtrl+Shift+X"); - app.LocaleMenu (hmenu, IDS_PURGE_TIMERS, IDM_PURGE_TIMERS, false, L"\tCtrl+Shift+T"); + app.LocaleMenu (hmenu, IDS_PURGE_UNUSED, IDM_PURGE_UNUSED, FALSE, L"\tCtrl+Shift+X"); + app.LocaleMenu (hmenu, IDS_PURGE_TIMERS, IDM_PURGE_TIMERS, FALSE, L"\tCtrl+Shift+T"); - app.LocaleMenu (hmenu, IDS_FIND, IDM_FIND, false, L"...\tCtrl+F"); - app.LocaleMenu (hmenu, IDS_FINDNEXT, IDM_FINDNEXT, false, L"\tF3"); + app.LocaleMenu (hmenu, IDS_FIND, IDM_FIND, FALSE, L"...\tCtrl+F"); + app.LocaleMenu (hmenu, IDS_FINDNEXT, IDM_FINDNEXT, FALSE, L"\tF3"); - app.LocaleMenu (hmenu, IDS_REFRESH, IDM_REFRESH, false, L"\tF5"); + app.LocaleMenu (hmenu, IDS_REFRESH, IDM_REFRESH, FALSE, L"\tF5"); - app.LocaleMenu (hmenu, IDS_VIEW, 2, true, nullptr); + app.LocaleMenu (hmenu, IDS_VIEW, 2, TRUE, NULL); - app.LocaleMenu (hmenu, IDS_ALWAYSONTOP_CHK, IDM_ALWAYSONTOP_CHK, false, nullptr); - app.LocaleMenu (hmenu, IDS_SHOWFILENAMESONLY_CHK, IDM_SHOWFILENAMESONLY_CHK, false, nullptr); - app.LocaleMenu (hmenu, IDS_AUTOSIZECOLUMNS_CHK, IDM_AUTOSIZECOLUMNS_CHK, false, nullptr); - app.LocaleMenu (hmenu, IDS_ENABLESPECIALGROUP_CHK, IDM_ENABLESPECIALGROUP_CHK, false, nullptr); + app.LocaleMenu (hmenu, IDS_ALWAYSONTOP_CHK, IDM_ALWAYSONTOP_CHK, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_SHOWFILENAMESONLY_CHK, IDM_SHOWFILENAMESONLY_CHK, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_AUTOSIZECOLUMNS_CHK, IDM_AUTOSIZECOLUMNS_CHK, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ENABLESPECIALGROUP_CHK, IDM_ENABLESPECIALGROUP_CHK, FALSE, NULL); - app.LocaleMenu (GetSubMenu (hmenu, 2), IDS_ICONS, 5, true, nullptr); - app.LocaleMenu (hmenu, IDS_ICONSSMALL, IDM_SIZE_SMALL, false, nullptr); - app.LocaleMenu (hmenu, IDS_ICONSLARGE, IDM_SIZE_LARGE, false, nullptr); - app.LocaleMenu (hmenu, IDS_ICONSEXTRALARGE, IDM_SIZE_EXTRALARGE, false, nullptr); + app.LocaleMenu (GetSubMenu (hmenu, 2), IDS_ICONS, 5, TRUE, NULL); + app.LocaleMenu (hmenu, IDS_ICONSSMALL, IDM_SIZE_SMALL, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ICONSLARGE, IDM_SIZE_LARGE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ICONSEXTRALARGE, IDM_SIZE_EXTRALARGE, FALSE, NULL); - app.LocaleMenu (hmenu, IDS_VIEW_ICON, IDM_VIEW_ICON, false, nullptr); - app.LocaleMenu (hmenu, IDS_VIEW_DETAILS, IDM_VIEW_DETAILS, false, nullptr); - app.LocaleMenu (hmenu, IDS_VIEW_TILE, IDM_VIEW_TILE, false, nullptr); + app.LocaleMenu (hmenu, IDS_VIEW_ICON, IDM_VIEW_ICON, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_VIEW_DETAILS, IDM_VIEW_DETAILS, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_VIEW_TILE, IDM_VIEW_TILE, FALSE, NULL); - app.LocaleMenu (hmenu, IDS_ICONSISHIDDEN, IDM_ICONSISHIDDEN, false, nullptr); + app.LocaleMenu (hmenu, IDS_ICONSISHIDDEN, IDM_ICONSISHIDDEN, FALSE, NULL); - app.LocaleMenu (GetSubMenu (hmenu, 2), IDS_LANGUAGE, LANG_MENU, true, L" (Language)"); + app.LocaleMenu (GetSubMenu (hmenu, 2), IDS_LANGUAGE, LANG_MENU, TRUE, L" (Language)"); - app.LocaleMenu (hmenu, IDS_FONT, IDM_FONT, false, L"..."); + app.LocaleMenu (hmenu, IDS_FONT, IDM_FONT, FALSE, L"..."); - const rstring recommended = app.LocaleString (IDS_RECOMMENDED, nullptr); + rstring recommended = app.LocaleString (IDS_RECOMMENDED, NULL); - app.LocaleMenu (hmenu, IDS_TRAY_RULES, 3, true, nullptr); + app.LocaleMenu (hmenu, IDS_TRAY_RULES, 3, TRUE, NULL); - app.LocaleMenu (hmenu, IDS_TAB_NETWORK, IDM_CONNECTIONS_TITLE, false, nullptr); - app.LocaleMenu (hmenu, IDS_TITLE_SECURITY, IDM_SECURITY_TITLE, false, nullptr); - app.LocaleMenu (hmenu, IDS_TITLE_ADVANCED, IDM_ADVANCED_TITLE, false, nullptr); + app.LocaleMenu (hmenu, IDS_TAB_NETWORK, IDM_CONNECTIONS_TITLE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_TITLE_SECURITY, IDM_SECURITY_TITLE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_TITLE_ADVANCED, IDM_ADVANCED_TITLE, FALSE, NULL); - _r_menu_enableitem (hmenu, IDM_CONNECTIONS_TITLE, MF_BYCOMMAND, false); - _r_menu_enableitem (hmenu, IDM_SECURITY_TITLE, MF_BYCOMMAND, false); - _r_menu_enableitem (hmenu, IDM_ADVANCED_TITLE, MF_BYCOMMAND, false); + _r_menu_enableitem (hmenu, IDM_CONNECTIONS_TITLE, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hmenu, IDM_SECURITY_TITLE, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hmenu, IDM_ADVANCED_TITLE, MF_BYCOMMAND, FALSE); - app.LocaleMenu (hmenu, IDS_RULE_BLOCKOUTBOUND, IDM_RULE_BLOCKOUTBOUND, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_RULE_BLOCKINBOUND, IDM_RULE_BLOCKINBOUND, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_RULE_ALLOWLOOPBACK, IDM_RULE_ALLOWLOOPBACK, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_RULE_ALLOW6TO4, IDM_RULE_ALLOW6TO4, false, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_RULE_BLOCKOUTBOUND, IDM_RULE_BLOCKOUTBOUND, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_RULE_BLOCKINBOUND, IDM_RULE_BLOCKINBOUND, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_RULE_ALLOWLOOPBACK, IDM_RULE_ALLOWLOOPBACK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_RULE_ALLOW6TO4, IDM_RULE_ALLOW6TO4, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_SECUREFILTERS_CHK, IDM_SECUREFILTERS_CHK, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_USESTEALTHMODE_CHK, IDM_USESTEALTHMODE_CHK, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_INSTALLBOOTTIMEFILTERS_CHK, IDM_INSTALLBOOTTIMEFILTERS_CHK, false, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_SECUREFILTERS_CHK, IDM_SECUREFILTERS_CHK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_USESTEALTHMODE_CHK, IDM_USESTEALTHMODE_CHK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_INSTALLBOOTTIMEFILTERS_CHK, IDM_INSTALLBOOTTIMEFILTERS_CHK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_USENETWORKRESOLUTION_CHK, IDM_USENETWORKRESOLUTION_CHK, false, nullptr); - app.LocaleMenu (hmenu, IDS_USECERTIFICATES_CHK, IDM_USECERTIFICATES_CHK, false, nullptr); - app.LocaleMenu (hmenu, IDS_USEREFRESHDEVICES_CHK, IDM_USEREFRESHDEVICES_CHK, false, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_USENETWORKRESOLUTION_CHK, IDM_USENETWORKRESOLUTION_CHK, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_USECERTIFICATES_CHK, IDM_USECERTIFICATES_CHK, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_USEREFRESHDEVICES_CHK, IDM_USEREFRESHDEVICES_CHK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_TRAY_BLOCKLIST_RULES, 4, true, nullptr); + app.LocaleMenu (hmenu, IDS_TRAY_BLOCKLIST_RULES, 4, TRUE, NULL); - app.LocaleMenu (hmenu, IDS_BLOCKLIST_SPY, IDM_BLOCKLIST_SPY_TITLE, false, nullptr); - app.LocaleMenu (hmenu, IDS_BLOCKLIST_UPDATE, IDM_BLOCKLIST_UPDATE_TITLE, false, nullptr); - app.LocaleMenu (hmenu, IDS_BLOCKLIST_EXTRA, IDM_BLOCKLIST_EXTRA_TITLE, false, nullptr); + app.LocaleMenu (hmenu, IDS_BLOCKLIST_SPY, IDM_BLOCKLIST_SPY_TITLE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_BLOCKLIST_UPDATE, IDM_BLOCKLIST_UPDATE_TITLE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_BLOCKLIST_EXTRA, IDM_BLOCKLIST_EXTRA_TITLE, FALSE, NULL); - _r_menu_enableitem (hmenu, IDM_BLOCKLIST_SPY_TITLE, MF_BYCOMMAND, false); - _r_menu_enableitem (hmenu, IDM_BLOCKLIST_UPDATE_TITLE, MF_BYCOMMAND, false); - _r_menu_enableitem (hmenu, IDM_BLOCKLIST_EXTRA_TITLE, MF_BYCOMMAND, false); + _r_menu_enableitem (hmenu, IDM_BLOCKLIST_SPY_TITLE, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hmenu, IDM_BLOCKLIST_UPDATE_TITLE, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hmenu, IDM_BLOCKLIST_EXTRA_TITLE, MF_BYCOMMAND, FALSE); - app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_SPY_DISABLE, false, nullptr); - app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_SPY_ALLOW, false, nullptr); - app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_SPY_BLOCK, false, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_SPY_DISABLE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_SPY_ALLOW, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_SPY_BLOCK, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_UPDATE_DISABLE, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_UPDATE_ALLOW, false, nullptr); - app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_UPDATE_BLOCK, false, nullptr); + app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_UPDATE_DISABLE, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_UPDATE_ALLOW, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_UPDATE_BLOCK, FALSE, NULL); - app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_EXTRA_DISABLE, false, _r_fmt (L" (%s)", recommended.GetString ())); - app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_EXTRA_ALLOW, false, nullptr); - app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_EXTRA_BLOCK, false, nullptr); + app.LocaleMenu (hmenu, IDS_DISABLE, IDM_BLOCKLIST_EXTRA_DISABLE, FALSE, _r_fmt (L" (%s)", recommended.GetString ())); + app.LocaleMenu (hmenu, IDS_ACTION_ALLOW, IDM_BLOCKLIST_EXTRA_ALLOW, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ACTION_BLOCK, IDM_BLOCKLIST_EXTRA_BLOCK, FALSE, NULL); - app.LocaleMenu (hmenu, IDS_HELP, 5, true, nullptr); - app.LocaleMenu (hmenu, IDS_WEBSITE, IDM_WEBSITE, false, nullptr); - app.LocaleMenu (hmenu, IDS_CHECKUPDATES, IDM_CHECKUPDATES, false, nullptr); - app.LocaleMenu (hmenu, IDS_ABOUT, IDM_ABOUT, false, L"\tF1"); + app.LocaleMenu (hmenu, IDS_HELP, 5, TRUE, NULL); + app.LocaleMenu (hmenu, IDS_WEBSITE, IDM_WEBSITE, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_CHECKUPDATES, IDM_CHECKUPDATES, FALSE, NULL); + app.LocaleMenu (hmenu, IDS_ABOUT, IDM_ABOUT, FALSE, L"\tF1"); + + app.LocaleEnum ((HWND)GetSubMenu (hmenu, 2), LANG_MENU, TRUE, IDX_LANGUAGE); // enum localizations } // localize toolbar _app_setinterfacestate (hwnd); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_REFRESH, app.LocaleString (IDS_REFRESH, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_SETTINGS, app.LocaleString (IDS_SETTINGS, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_REFRESH, app.LocaleString (IDS_REFRESH, NULL), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_SETTINGS, app.LocaleString (IDS_SETTINGS, NULL), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"..."), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"..."), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, nullptr), BTNS_CHECK | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, nullptr), BTNS_CHECK | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, app.LocaleString (IDS_ENABLEUILOG_CHK, L" (session only)"), BTNS_CHECK | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, NULL), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, NULL), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, app.LocaleString (IDS_ENABLEUILOG_CHK, L" (session only)"), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGSHOW, app.LocaleString (IDS_LOGSHOW, L" (Ctrl+I)"), BTNS_BUTTON | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGCLEAR, app.LocaleString (IDS_LOGCLEAR, L" (Ctrl+X)"), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGSHOW, app.LocaleString (IDS_LOGSHOW, L" (Ctrl+I)"), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGCLEAR, app.LocaleString (IDS_LOGCLEAR, L" (Ctrl+X)"), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_DONATE, app.LocaleString (IDS_DONATE, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_DONATE, app.LocaleString (IDS_DONATE, NULL), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); // set rebar size _app_toolbar_resize (); @@ -2219,7 +2213,7 @@ find_wrap: // localize tabs for (INT i = 0; i < (INT)SendDlgItemMessage (hwnd, IDC_TAB, TCM_GETITEMCOUNT, 0, 0); i++) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); UINT locale_id; @@ -2250,51 +2244,50 @@ find_wrap: else continue; - _r_tab_setitem (hwnd, IDC_TAB, i, app.LocaleString (locale_id, nullptr)); + _r_tab_setitem (hwnd, IDC_TAB, i, app.LocaleString (locale_id, NULL), I_IMAGENONE, 0); if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { - _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDED, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDED, NULL), 0); } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { - _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_PROTOCOL, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_DIRECTION, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_PROTOCOL, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_DIRECTION, NULL), 0); } else if (listview_id == IDC_NETWORK) { - _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0); _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0); _r_listview_setcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0); _r_listview_setcolumn (hwnd, listview_id, 3, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0); _r_listview_setcolumn (hwnd, listview_id, 4, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0); - _r_listview_setcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_STATE, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_STATE, NULL), 0); } else if (listview_id == IDC_LOG) { - _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 0, app.LocaleString (IDS_NAME, NULL), 0); _r_listview_setcolumn (hwnd, listview_id, 1, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0); _r_listview_setcolumn (hwnd, listview_id, 2, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_LOCAL)), 0); _r_listview_setcolumn (hwnd, listview_id, 3, app.LocaleString (IDS_ADDRESS, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0); _r_listview_setcolumn (hwnd, listview_id, 4, app.LocaleString (IDS_PORT, _r_fmt (L" (%s)", SZ_DIRECTION_REMOTE)), 0); - _r_listview_setcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_DIRECTION, nullptr), 0); - _r_listview_setcolumn (hwnd, listview_id, 7, app.LocaleString (IDS_STATE, nullptr), 0); + _r_listview_setcolumn (hwnd, listview_id, 5, app.LocaleString (IDS_PROTOCOL, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 6, app.LocaleString (IDS_FILTER, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 7, app.LocaleString (IDS_DIRECTION, NULL), 0); + _r_listview_setcolumn (hwnd, listview_id, 8, app.LocaleString (IDS_STATE, NULL), 0); } SendDlgItemMessage (hwnd, listview_id, LVM_RESETEMPTYTEXT, 0, 0); } - app.LocaleEnum ((HWND)GetSubMenu (hmenu, 2), LANG_MENU, true, IDX_LANGUAGE); // enum localizations - - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); _app_refreshstatus (hwnd, listview_id); } @@ -2304,7 +2297,7 @@ find_wrap: _r_wnd_addstyle (config.hnotification, IDC_BLOCK_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (config.hnotification, IDC_LATER_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); - _app_notifyrefresh (config.hnotification, false); + _app_notifyrefresh (config.hnotification, FALSE); break; } @@ -2313,7 +2306,7 @@ find_wrap: { // refresh tray icon _r_tray_destroy (hwnd, UID); - _r_tray_create (hwnd, UID, WM_TRAYICON, app.GetSharedImage (app.GetHINSTANCE (), (_wfp_isfiltersinstalled () != InstallDisabled) ? IDI_ACTIVE : IDI_INACTIVE, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)), APP_NAME, false); + _r_tray_create (hwnd, UID, WM_TRAYICON, app.GetSharedImage (app.GetHINSTANCE (), (_wfp_isfiltersinstalled () != InstallDisabled) ? IDI_ACTIVE : IDI_INACTIVE, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON)), APP_NAME, FALSE); break; } @@ -2327,29 +2320,29 @@ find_wrap: // reset toolbar information _app_setinterfacestate (hwnd); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_REFRESH, app.LocaleString (IDS_REFRESH, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_SETTINGS, app.LocaleString (IDS_SETTINGS, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_REFRESH, app.LocaleString (IDS_REFRESH, NULL), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_SETTINGS, app.LocaleString (IDS_SETTINGS, NULL), BTNS_BUTTON | BTNS_AUTOSIZE | BTNS_SHOWTEXT, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"..."), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"..."), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, nullptr), BTNS_CHECK | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, nullptr), BTNS_CHECK | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, app.LocaleString (IDS_ENABLEUILOG_CHK, nullptr), BTNS_CHECK | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLENOTIFICATIONS_CHK, app.LocaleString (IDS_ENABLENOTIFICATIONS_CHK, NULL), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLELOG_CHK, app.LocaleString (IDS_ENABLELOG_CHK, NULL), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_ENABLEUILOG_CHK, app.LocaleString (IDS_ENABLEUILOG_CHK, NULL), BTNS_CHECK | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGSHOW, app.LocaleString (IDS_LOGSHOW, L" (Ctrl+I)"), BTNS_BUTTON | BTNS_AUTOSIZE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGCLEAR, app.LocaleString (IDS_LOGCLEAR, L" (Ctrl+X)"), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGSHOW, app.LocaleString (IDS_LOGSHOW, L" (Ctrl+I)"), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_TRAY_LOGCLEAR, app.LocaleString (IDS_LOGCLEAR, L" (Ctrl+X)"), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_DONATE, app.LocaleString (IDS_DONATE, nullptr), BTNS_BUTTON | BTNS_AUTOSIZE); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, IDM_DONATE, app.LocaleString (IDS_DONATE, NULL), BTNS_BUTTON | BTNS_AUTOSIZE, 0, I_IMAGENONE); _app_toolbar_resize (); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { _app_listviewsetview (hwnd, listview_id); - _app_listviewsetfont (hwnd, listview_id, true); - _app_listviewresize (hwnd, listview_id, false); + _app_listviewsetfont (hwnd, listview_id, TRUE); + _app_listviewresize (hwnd, listview_id, FALSE); } _app_refreshstatus (hwnd, 0); @@ -2359,32 +2352,32 @@ find_wrap: case RM_CONFIG_UPDATE: { - _app_profile_save (); - _app_profile_load (hwnd); + _app_profile_save (NULL); + _app_profile_load (hwnd, NULL); - _app_refreshstatus (hwnd); + _app_refreshstatus (hwnd, INVALID_INT); - _app_changefilters (hwnd, true, false); + _app_changefilters (hwnd, TRUE, FALSE); break; } case RM_CONFIG_RESET: { - const time_t current_timestamp = (time_t)lparam; + time_t current_timestamp = (time_t)lparam; - _app_freeobjects_map (rules_config, 0); + _app_freerulesconfig_map (rules_config); _r_fs_makebackup (config.profile_path, current_timestamp); - _r_fs_remove (config.profile_path, RFS_FORCEREMOVE); - _r_fs_remove (config.profile_path_backup, RFS_FORCEREMOVE); + _r_fs_remove (config.profile_path, _R_FLAG_REMOVE_FORCE); + _r_fs_remove (config.profile_path_backup, _R_FLAG_REMOVE_FORCE); - _app_profile_load (hwnd); + _app_profile_load (hwnd, NULL); - _app_refreshstatus (hwnd); + _app_refreshstatus (hwnd, INVALID_INT); - _app_changefilters (hwnd, true, false); + _app_changefilters (hwnd, TRUE, FALSE); break; } @@ -2394,8 +2387,8 @@ find_wrap: if (_wfp_isfiltersinstalled ()) { if (_app_istimersactive () ? - !app.ShowConfirmMessage (hwnd, nullptr, app.LocaleString (IDS_QUESTION_TIMER, nullptr), L"ConfirmExitTimer") : - !app.ShowConfirmMessage (hwnd, nullptr, app.LocaleString (IDS_QUESTION_EXIT, nullptr), L"ConfirmExit2")) + !app.ShowConfirmMessage (hwnd, NULL, app.LocaleString (IDS_QUESTION_TIMER, NULL), L"ConfirmExitTimer") : + !app.ShowConfirmMessage (hwnd, NULL, app.LocaleString (IDS_QUESTION_EXIT, NULL), L"ConfirmExit2")) { SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -2409,7 +2402,7 @@ find_wrap: case WM_DESTROY: { - app.ConfigSet (L"CurrentTab", (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)); + app.ConfigSetInteger (L"CurrentTab", (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)); if (config.hnotification) DestroyWindow (config.hnotification); @@ -2419,7 +2412,7 @@ find_wrap: _r_tray_destroy (hwnd, UID); - _app_loginit (false); + _app_loginit (FALSE); _app_freelogstack (); if (config.done_evt) @@ -2433,7 +2426,7 @@ find_wrap: HANDLE hengine = _wfp_getenginehandle (); if (hengine) - _wfp_uninitialize (hengine, false); + _wfp_uninitialize (hengine, FALSE); ImageList_Destroy (config.himg_toolbar); ImageList_Destroy (config.himg_rules_small); @@ -2448,36 +2441,36 @@ find_wrap: case WM_DROPFILES: { - const UINT numfiles = DragQueryFile ((HDROP)wparam, UINT32_MAX, nullptr, 0); - size_t app_hash = 0; + UINT numfiles = DragQueryFile ((HDROP)wparam, UINT32_MAX, NULL, 0); + SIZE_T app_hash = 0; for (UINT i = 0; i < numfiles; i++) { - const UINT length = DragQueryFile ((HDROP)wparam, i, nullptr, 0) + 1; + UINT length = DragQueryFile ((HDROP)wparam, i, NULL, 0) + 1; - LPWSTR file = new WCHAR[length]; + LPWSTR file = (LPWSTR)_r_mem_allocatezero (length * sizeof (WCHAR)); DragQueryFile ((HDROP)wparam, i, file, length); - app_hash = _app_addapplication (hwnd, file, 0, 0, 0, false, false); + app_hash = _app_addapplication (hwnd, file, 0, 0, 0, FALSE, FALSE); - SAFE_DELETE_ARRAY (file); + _r_mem_free (file); } DragFinish ((HDROP)wparam); - _app_profile_save (); - _app_refreshstatus (hwnd); + _app_profile_save (NULL); + _app_refreshstatus (hwnd, INVALID_INT); { - const INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); if (app_listview_id) { - if (app_listview_id == _r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) - _app_listviewsort (hwnd, app_listview_id); + if (app_listview_id == (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) + _app_listviewsort (hwnd, app_listview_id, INVALID_INT, FALSE); - _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, app_hash)); + _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, app_hash), INVALID_INT); } } @@ -2486,7 +2479,7 @@ find_wrap: case WM_SETTINGCHANGE: { - _app_notifyrefresh (config.hnotification, false); + _app_notifyrefresh (config.hnotification, FALSE); break; } @@ -2498,12 +2491,12 @@ find_wrap: { case TCN_SELCHANGING: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (!listview_id) break; - const HWND hlistview = GetDlgItem (hwnd, listview_id); + HWND hlistview = GetDlgItem (hwnd, listview_id); if (!hlistview) break; @@ -2515,26 +2508,26 @@ find_wrap: case TCN_SELCHANGE: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (!listview_id) break; - const HWND hlistview = GetDlgItem (hwnd, listview_id); + HWND hlistview = GetDlgItem (hwnd, listview_id); if (!hlistview) break; _r_tab_adjustchild (hwnd, IDC_TAB, hlistview); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_listviewsetview (hwnd, listview_id); - _app_listviewsetfont (hwnd, listview_id, false); + _app_listviewsetfont (hwnd, listview_id, FALSE); - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); _app_refreshstatus (hwnd, listview_id); - _r_listview_redraw (hwnd, listview_id); + _r_listview_redraw (hwnd, listview_id, INVALID_INT); ShowWindow (hlistview, SW_SHOWNA); @@ -2546,10 +2539,12 @@ find_wrap: case NM_CUSTOMDRAW: { - LONG result = CDRF_DODEFAULT; + LONG_PTR result = CDRF_DODEFAULT; LPNMLVCUSTOMDRAW lpnmcd = (LPNMLVCUSTOMDRAW)lparam; - if (static_cast(lpnmcd->nmcd.hdr.idFrom) == IDC_TOOLBAR) + INT ctrl_id = PtrToInt ((LPVOID)lpnmcd->nmcd.hdr.idFrom); + + if (ctrl_id == IDC_TOOLBAR) { result = _app_nmcustdraw_toolbar (lpnmcd); } @@ -2565,7 +2560,10 @@ find_wrap: case LVN_COLUMNCLICK: { LPNMLISTVIEW lpnmlv = (LPNMLISTVIEW)lparam; - _app_listviewsort (hwnd, static_cast(lpnmlv->hdr.idFrom), lpnmlv->iSubItem, true); + + INT ctrl_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); + + _app_listviewsort (hwnd, ctrl_id, lpnmlv->iSubItem, TRUE); break; } @@ -2574,10 +2572,7 @@ find_wrap: { LPNMLVGETINFOTIP lpnmlv = (LPNMLVGETINFOTIP)lparam; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); - const LPARAM idx = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); - - _r_str_copy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettooltip (hwnd, listview_id, idx)); + _r_str_copy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettooltip (hwnd, lpnmlv)); break; } @@ -2593,14 +2588,14 @@ find_wrap: if (_r_fastlock_islocked (&lock_checkbox)) break; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); - bool is_changed = false; + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); + BOOLEAN is_changed = FALSE; - const bool is_enabled = (lpnmlv->uNewState & LVIS_STATEIMAGEMASK) == INDEXTOSTATEIMAGEMASK (2); + BOOLEAN is_enabled = (lpnmlv->uNewState & LVIS_STATEIMAGEMASK) == INDEXTOSTATEIMAGEMASK (2); if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { - const size_t app_hash = lpnmlv->lParam; + SIZE_T app_hash = lpnmlv->lParam; PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -2627,19 +2622,23 @@ find_wrap: _app_timer_reset (hwnd, ptr_app); rules.push_back (ptr_app_object); - _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); - is_changed = true; + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create3filters (hengine, rules, __LINE__); + + is_changed = TRUE; } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { OBJECTS_VEC rules; - const size_t rule_idx = lpnmlv->lParam; + SIZE_T rule_idx = lpnmlv->lParam; PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) @@ -2654,26 +2653,30 @@ find_wrap: _r_fastlock_acquireshared (&lock_checkbox); _app_ruleenable (ptr_rule, is_enabled); - _app_setruleiteminfo (hwnd, listview_id, lpnmlv->iItem, ptr_rule, true); + _app_setruleiteminfo (hwnd, listview_id, lpnmlv->iItem, ptr_rule, TRUE); _r_fastlock_releaseshared (&lock_checkbox); rules.push_back (ptr_rule_object); - _wfp_create4filters (_wfp_getenginehandle (), rules, __LINE__); - is_changed = true; + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create4filters (hengine, rules, __LINE__); + + is_changed = TRUE; } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } if (is_changed) { - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } } } @@ -2686,7 +2689,7 @@ find_wrap: NMLVEMPTYMARKUP* lpnmlv = (NMLVEMPTYMARKUP*)lparam; lpnmlv->dwFlags = EMF_CENTERED; - _r_str_copy (lpnmlv->szMarkup, _countof (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, nullptr)); + _r_str_copy (lpnmlv->szMarkup, RTL_NUMBER_OF (lpnmlv->szMarkup), app.LocaleString (IDS_STATUS_EMPTY, NULL)); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -2700,7 +2703,7 @@ find_wrap: break; INT command_id = 0; - const INT ctrl_id = static_cast(lpnmlv->hdr.idFrom); + INT ctrl_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if (ctrl_id >= IDC_APPS_PROFILE && ctrl_id <= IDC_LOG) { @@ -2733,21 +2736,21 @@ find_wrap: if (lpnmlv->iItem == INVALID_INT) break; - const INT listview_id = static_cast(lpnmlv->hdr.idFrom); + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); if (!(listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_LOG)) break; - const HMENU hmenu = CreatePopupMenu (); + HMENU hmenu = CreatePopupMenu (); if (!hmenu) break; - HMENU hsubmenu1 = nullptr; - HMENU hsubmenu2 = nullptr; + HMENU hsubmenu1 = NULL; + HMENU hsubmenu2 = NULL; - const size_t hash_item = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); - const INT lv_column_current = lpnmlv->iSubItem; + SIZE_T hash_item = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); + INT lv_column_current = lpnmlv->iSubItem; if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { @@ -2755,36 +2758,37 @@ find_wrap: hsubmenu2 = CreatePopupMenu (); // show rules - AppendMenu (hsubmenu1, MF_STRING, IDM_DISABLENOTIFICATIONS, app.LocaleString (IDS_DISABLENOTIFICATIONS, nullptr)); + AppendMenu (hsubmenu1, MF_STRING, IDM_DISABLENOTIFICATIONS, app.LocaleString (IDS_DISABLENOTIFICATIONS, NULL)); _app_generate_rulesmenu (hsubmenu1, hash_item); // show timers - AppendMenu (hsubmenu2, MF_STRING, IDM_DISABLETIMER, app.LocaleString (IDS_DISABLETIMER, nullptr)); - AppendMenu (hsubmenu2, MF_SEPARATOR, 0, nullptr); + AppendMenu (hsubmenu2, MF_STRING, IDM_DISABLETIMER, app.LocaleString (IDS_DISABLETIMER, NULL)); + AppendMenu (hsubmenu2, MF_SEPARATOR, 0, NULL); _app_generate_timermenu (hsubmenu2, hash_item); AppendMenu (hmenu, MF_STRING, IDM_PROPERTIES, app.LocaleString (IDS_EXPLORE, L"\tEnter")); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hmenu, MF_POPUP, (UINT_PTR)hsubmenu1, app.LocaleString (IDS_TRAY_RULES, NULL)); + AppendMenu (hmenu, MF_POPUP, (UINT_PTR)hsubmenu2, app.LocaleString (IDS_TIMER, NULL)); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_DELETE, app.LocaleString (IDS_DELETE, L"\tDel")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hmenu, MF_POPUP, (UINT_PTR)hsubmenu1, app.LocaleString (IDS_TRAY_RULES, nullptr)); - AppendMenu (hmenu, MF_POPUP, (UINT_PTR)hsubmenu2, app.LocaleString (IDS_TIMER, nullptr)); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, nullptr)); - AppendMenu (hmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, nullptr)); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, NULL)); + AppendMenu (hmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, NULL)); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_SELECT_ALL, app.LocaleString (IDS_SELECT_ALL, L"\tCtrl+A")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, L"\tCtrl+C")); AppendMenu (hmenu, MF_STRING, IDM_COPY2, app.LocaleString (IDS_COPY, _r_fmt (L" \"%s\"", _r_listview_getcolumntext (hwnd, listview_id, lv_column_current).GetString ()))); SetMenuDefaultItem (hmenu, IDM_PROPERTIES, MF_BYCOMMAND); - _r_menu_checkitem (hmenu, IDM_DISABLENOTIFICATIONS, 0, MF_BYCOMMAND, _app_getappinfo (hash_item, InfoIsSilent) != FALSE); + _r_menu_checkitem (hmenu, IDM_DISABLENOTIFICATIONS, 0, MF_BYCOMMAND, (BOOL)_app_getappinfo (hash_item, InfoIsSilent) != FALSE); if (listview_id != IDC_APPS_PROFILE) - _r_menu_enableitem (hmenu, IDM_DELETE, MF_BYCOMMAND, false); + _r_menu_enableitem (hmenu, IDM_DELETE, MF_BYCOMMAND, FALSE); } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { @@ -2804,18 +2808,18 @@ find_wrap: PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule && ptr_rule->is_readonly) - _r_menu_enableitem (hmenu, IDM_DELETE, MF_BYCOMMAND, false); + _r_menu_enableitem (hmenu, IDM_DELETE, MF_BYCOMMAND, FALSE); - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, nullptr)); - AppendMenu (hmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, nullptr)); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hmenu, MF_STRING, IDM_CHECK, app.LocaleString (IDS_CHECK, NULL)); + AppendMenu (hmenu, MF_STRING, IDM_UNCHECK, app.LocaleString (IDS_UNCHECK, NULL)); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_SELECT_ALL, app.LocaleString (IDS_SELECT_ALL, L"\tCtrl+A")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, L"\tCtrl+C")); AppendMenu (hmenu, MF_STRING, IDM_COPY2, app.LocaleString (IDS_COPY, _r_fmt (L" \"%s\"", _r_listview_getcolumntext (hwnd, listview_id, lv_column_current).GetString ()))); @@ -2825,46 +2829,42 @@ find_wrap: { AppendMenu (hmenu, MF_STRING, IDM_PROPERTIES, app.LocaleString (IDS_SHOWINLIST, L"\tEnter")); AppendMenu (hmenu, MF_STRING, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"...")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); - AppendMenu (hmenu, MF_STRING, IDM_NETWORK_CLOSE, app.LocaleString (IDS_NETWORK_CLOSE, nullptr)); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); + AppendMenu (hmenu, MF_STRING, IDM_NETWORK_CLOSE, app.LocaleString (IDS_NETWORK_CLOSE, NULL)); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_SELECT_ALL, app.LocaleString (IDS_SELECT_ALL, L"\tCtrl+A")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, L"\tCtrl+C")); AppendMenu (hmenu, MF_STRING, IDM_COPY2, app.LocaleString (IDS_COPY, _r_fmt (L" \"%s\"", _r_listview_getcolumntext (hwnd, listview_id, lv_column_current).GetString ()))); SetMenuDefaultItem (hmenu, IDM_PROPERTIES, MF_BYCOMMAND); - PR_OBJECT ptr_network_object = _app_getnetworkitem (hash_item); + PITEM_NETWORK ptr_network = _app_getnetworkitem (hash_item); - if (ptr_network_object) + if (ptr_network) { - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; + if (ptr_network->af != AF_INET || ptr_network->state != MIB_TCP_STATE_ESTAB) + _r_menu_enableitem (hmenu, IDM_NETWORK_CLOSE, MF_BYCOMMAND, FALSE); - if (ptr_network) - { - if (ptr_network->af != AF_INET || ptr_network->state != MIB_TCP_STATE_ESTAB) - _r_menu_enableitem (hmenu, IDM_NETWORK_CLOSE, MF_BYCOMMAND, false); - } - - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); } + } else if (listview_id == IDC_LOG) { AppendMenu (hmenu, MF_STRING, IDM_PROPERTIES, app.LocaleString (IDS_SHOWINLIST, L"\tEnter")); AppendMenu (hmenu, MF_STRING, IDM_OPENRULESEDITOR, app.LocaleString (IDS_OPENRULESEDITOR, L"...")); AppendMenu (hmenu, MF_STRING, IDM_TRAY_LOGCLEAR, app.LocaleString (IDS_LOGCLEAR, L"\tCtrl+X")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_SELECT_ALL, app.LocaleString (IDS_SELECT_ALL, L"\tCtrl+A")); - AppendMenu (hmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hmenu, MF_SEPARATOR, 0, NULL); AppendMenu (hmenu, MF_STRING, IDM_COPY, app.LocaleString (IDS_COPY, L"\tCtrl+C")); AppendMenu (hmenu, MF_STRING, IDM_COPY2, app.LocaleString (IDS_COPY, _r_fmt (L" \"%s\"", _r_listview_getcolumntext (hwnd, listview_id, lv_column_current).GetString ()))); SetMenuDefaultItem (hmenu, IDM_PROPERTIES, MF_BYCOMMAND); } - const INT command_id = _r_menu_popup (hmenu, hwnd, nullptr, false); + INT command_id = _r_menu_popup (hmenu, hwnd, NULL, FALSE); if (hsubmenu1) DestroyMenu (hsubmenu1); @@ -2896,16 +2896,13 @@ find_wrap: { case NIN_POPUPOPEN: { - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (config.hnotification, false)); + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (config.hnotification, FALSE)); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + _app_notifyshow (config.hnotification, ptr_log, TRUE, FALSE); - if (ptr_log) - _app_notifyshow (config.hnotification, ptr_log, true, false); - - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } break; @@ -2925,7 +2922,7 @@ find_wrap: case WM_LBUTTONDBLCLK: { - _r_wnd_toggle (hwnd, false); + _r_wnd_toggle (hwnd, FALSE); break; } @@ -2937,10 +2934,10 @@ find_wrap: #define LOGGING_ID 5 #define ERRLOG_ID 6 - const bool is_filtersinstalled = (_wfp_isfiltersinstalled () != InstallDisabled); + BOOLEAN is_filtersinstalled = (_wfp_isfiltersinstalled () != InstallDisabled); - const HMENU hmenu = LoadMenu (nullptr, MAKEINTRESOURCE (IDM_TRAY)); - const HMENU hsubmenu = GetSubMenu (hmenu, 0); + HMENU hmenu = LoadMenu (NULL, MAKEINTRESOURCE (IDM_TRAY)); + HMENU hsubmenu = GetSubMenu (hmenu, 0); { MENUITEMINFO mii = {0}; @@ -2953,55 +2950,55 @@ find_wrap: } // localize - app.LocaleMenu (hsubmenu, IDS_TRAY_SHOW, IDM_TRAY_SHOW, false, nullptr); - app.LocaleMenu (hsubmenu, is_filtersinstalled ? IDS_TRAY_STOP : IDS_TRAY_START, IDM_TRAY_START, false, nullptr); + app.LocaleMenu (hsubmenu, IDS_TRAY_SHOW, IDM_TRAY_SHOW, FALSE, NULL); + app.LocaleMenu (hsubmenu, is_filtersinstalled ? IDS_TRAY_STOP : IDS_TRAY_START, IDM_TRAY_START, FALSE, NULL); - app.LocaleMenu (hsubmenu, IDS_TITLE_NOTIFICATIONS, NOTIFICATIONS_ID, true, nullptr); - app.LocaleMenu (hsubmenu, IDS_TITLE_LOGGING, LOGGING_ID, true, nullptr); + app.LocaleMenu (hsubmenu, IDS_TITLE_NOTIFICATIONS, NOTIFICATIONS_ID, TRUE, NULL); + app.LocaleMenu (hsubmenu, IDS_TITLE_LOGGING, LOGGING_ID, TRUE, NULL); - app.LocaleMenu (hsubmenu, IDS_ENABLENOTIFICATIONS_CHK, IDM_TRAY_ENABLENOTIFICATIONS_CHK, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_NOTIFICATIONSOUND_CHK, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_NOTIFICATIONONTRAY_CHK, IDM_TRAY_NOTIFICATIONONTRAY_CHK, false, nullptr); + app.LocaleMenu (hsubmenu, IDS_ENABLENOTIFICATIONS_CHK, IDM_TRAY_ENABLENOTIFICATIONS_CHK, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_NOTIFICATIONSOUND_CHK, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_NOTIFICATIONONTRAY_CHK, IDM_TRAY_NOTIFICATIONONTRAY_CHK, FALSE, NULL); - app.LocaleMenu (hsubmenu, IDS_ENABLELOG_CHK, IDM_TRAY_ENABLELOG_CHK, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_ENABLEUILOG_CHK, IDM_TRAY_ENABLEUILOG_CHK, false, L" (session only)"); - app.LocaleMenu (hsubmenu, IDS_LOGSHOW, IDM_TRAY_LOGSHOW, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_LOGCLEAR, IDM_TRAY_LOGCLEAR, false, nullptr); + app.LocaleMenu (hsubmenu, IDS_ENABLELOG_CHK, IDM_TRAY_ENABLELOG_CHK, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_ENABLEUILOG_CHK, IDM_TRAY_ENABLEUILOG_CHK, FALSE, L" (session only)"); + app.LocaleMenu (hsubmenu, IDS_LOGSHOW, IDM_TRAY_LOGSHOW, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_LOGCLEAR, IDM_TRAY_LOGCLEAR, FALSE, NULL); if (_r_fs_exists (app.GetLogPath ())) { - app.LocaleMenu (hsubmenu, IDS_TRAY_LOGERR, ERRLOG_ID, true, nullptr); + app.LocaleMenu (hsubmenu, IDS_TRAY_LOGERR, ERRLOG_ID, TRUE, NULL); - app.LocaleMenu (hsubmenu, IDS_LOGSHOW, IDM_TRAY_LOGSHOW_ERR, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_LOGCLEAR, IDM_TRAY_LOGCLEAR_ERR, false, nullptr); + app.LocaleMenu (hsubmenu, IDS_LOGSHOW, IDM_TRAY_LOGSHOW_ERR, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_LOGCLEAR, IDM_TRAY_LOGCLEAR_ERR, FALSE, NULL); } else { DeleteMenu (hsubmenu, ERRLOG_ID, MF_BYPOSITION); } - app.LocaleMenu (hsubmenu, IDS_SETTINGS, IDM_TRAY_SETTINGS, false, L"..."); - app.LocaleMenu (hsubmenu, IDS_WEBSITE, IDM_TRAY_WEBSITE, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_ABOUT, IDM_TRAY_ABOUT, false, nullptr); - app.LocaleMenu (hsubmenu, IDS_EXIT, IDM_TRAY_EXIT, false, nullptr); + app.LocaleMenu (hsubmenu, IDS_SETTINGS, IDM_TRAY_SETTINGS, FALSE, L"..."); + app.LocaleMenu (hsubmenu, IDS_WEBSITE, IDM_TRAY_WEBSITE, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_ABOUT, IDM_TRAY_ABOUT, FALSE, NULL); + app.LocaleMenu (hsubmenu, IDS_EXIT, IDM_TRAY_EXIT, FALSE, NULL); - _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONS_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsNotificationsEnabled", true).AsBool ()); - _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsNotificationsSound", true).AsBool ()); - _r_menu_checkitem (hsubmenu, IDM_TRAY_NOTIFICATIONONTRAY_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsNotificationsOnTray", false).AsBool ()); + _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONS_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE)); + _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsNotificationsSound", TRUE)); + _r_menu_checkitem (hsubmenu, IDM_TRAY_NOTIFICATIONONTRAY_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsNotificationsOnTray", FALSE)); - _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLELOG_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsLogEnabled", false).AsBool ()); - _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLEUILOG_CHK, 0, MF_BYCOMMAND, app.ConfigGet (L"IsLogUiEnabled", true).AsBool ()); + _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLELOG_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsLogEnabled", FALSE)); + _r_menu_checkitem (hsubmenu, IDM_TRAY_ENABLEUILOG_CHK, 0, MF_BYCOMMAND, app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE)); - if (!app.ConfigGet (L"IsNotificationsEnabled", true).AsBool ()) + if (!app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE)) { - _r_menu_enableitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, MF_BYCOMMAND, false); - _r_menu_enableitem (hsubmenu, IDM_TRAY_NOTIFICATIONONTRAY_CHK, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK, MF_BYCOMMAND, FALSE); + _r_menu_enableitem (hsubmenu, IDM_TRAY_NOTIFICATIONONTRAY_CHK, MF_BYCOMMAND, FALSE); } if (_wfp_isfiltersapplying ()) - _r_menu_enableitem (hsubmenu, IDM_TRAY_START, MF_BYCOMMAND, false); + _r_menu_enableitem (hsubmenu, IDM_TRAY_START, MF_BYCOMMAND, FALSE); - _r_menu_popup (hsubmenu, hwnd, nullptr, true); + _r_menu_popup (hsubmenu, hwnd, NULL, TRUE); DestroyMenu (hmenu); @@ -3059,10 +3056,10 @@ find_wrap: case DBT_DEVICEARRIVAL: case DBT_DEVICEREMOVECOMPLETE: { - if (!app.ConfigGet (L"IsRefreshDevices", true).AsBool ()) + if (!app.ConfigGetBoolean (L"IsRefreshDevices", TRUE)) break; - const PDEV_BROADCAST_HDR lbhdr = (PDEV_BROADCAST_HDR)lparam; + PDEV_BROADCAST_HDR lbhdr = (PDEV_BROADCAST_HDR)lparam; if (lbhdr && lbhdr->dbch_devicetype == DBT_DEVTYP_VOLUME) { @@ -3072,21 +3069,21 @@ find_wrap: { if (_wfp_isfiltersinstalled () && !_wfp_isfiltersapplying ()) { - const bool is_appexist = _app_isapphavedrive (FirstDriveFromMask (lpdbv->dbcv_unitmask)); + BOOLEAN is_appexist = _app_isapphavedrive (FirstDriveFromMask (lpdbv->dbcv_unitmask)); if (is_appexist) - _app_changefilters (hwnd, true, false); + _app_changefilters (hwnd, TRUE, FALSE); } else { if (IsWindowVisible (hwnd)) - _r_listview_redraw (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)); + _r_listview_redraw (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT), INVALID_INT); } } else if (wparam == DBT_DEVICEREMOVECOMPLETE) { if (IsWindowVisible (hwnd)) - _r_listview_redraw (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)); + _r_listview_redraw (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT), INVALID_INT); } } @@ -3099,16 +3096,16 @@ find_wrap: case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); + INT ctrl_id = LOWORD (wparam); - if (HIWORD (wparam) == 0 && ctrl_id >= IDX_LANGUAGE && ctrl_id <= INT (IDX_LANGUAGE + app.LocaleGetCount ())) + if (HIWORD (wparam) == 0 && ctrl_id >= IDX_LANGUAGE && ctrl_id <= (IDX_LANGUAGE + (INT)app.LocaleGetCount ())) { app.LocaleApplyFromMenu (GetSubMenu (GetSubMenu (GetMenu (hwnd), 2), LANG_MENU), ctrl_id, IDX_LANGUAGE); return FALSE; } - else if ((ctrl_id >= IDX_RULES_SPECIAL && ctrl_id <= INT (IDX_RULES_SPECIAL + rules_arr.size ()))) + else if ((ctrl_id >= IDX_RULES_SPECIAL && ctrl_id <= (IDX_RULES_SPECIAL + (INT)rules_arr.size ()))) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (!SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0)) return FALSE; @@ -3116,7 +3113,7 @@ find_wrap: INT item = INVALID_INT; BOOL is_remove = INVALID_INT; - const size_t rule_idx = (ctrl_id - IDX_RULES_SPECIAL); + SIZE_T rule_idx = (ctrl_id - IDX_RULES_SPECIAL); PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) @@ -3128,7 +3125,7 @@ find_wrap: { while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); if (ptr_rule->is_forservices && (app_hash == config.ntoskrnl_hash || app_hash == config.svchost_hash)) continue; @@ -3145,20 +3142,20 @@ find_wrap: _app_freenotify (app_hash, ptr_app); if (is_remove == INVALID_INT) - is_remove = ptr_rule->is_enabled && (ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ()); + is_remove = !!(ptr_rule->is_enabled && (ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ())); if (is_remove) { ptr_rule->apps.erase (app_hash); if (ptr_rule->apps.empty ()) - _app_ruleenable (ptr_rule, false); + _app_ruleenable (ptr_rule, FALSE); } else { - ptr_rule->apps[app_hash] = true; + ptr_rule->apps[app_hash] = TRUE; - _app_ruleenable (ptr_rule, true); + _app_ruleenable (ptr_rule, TRUE); } _r_fastlock_acquireshared (&lock_checkbox); @@ -3166,19 +3163,19 @@ find_wrap: _r_fastlock_releaseshared (&lock_checkbox); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - const INT rule_listview_id = _app_getlistview_id (ptr_rule->type); + INT rule_listview_id = _app_getlistview_id (ptr_rule->type); if (rule_listview_id) { - const INT item_pos = _app_getposition (hwnd, rule_listview_id, rule_idx); + INT item_pos = _app_getposition (hwnd, rule_listview_id, rule_idx); if (item_pos != INVALID_INT) { _r_fastlock_acquireshared (&lock_checkbox); - _app_setruleiteminfo (hwnd, rule_listview_id, item_pos, ptr_rule, true); + _app_setruleiteminfo (hwnd, rule_listview_id, item_pos, ptr_rule, TRUE); _r_fastlock_releaseshared (&lock_checkbox); } } @@ -3186,34 +3183,36 @@ find_wrap: OBJECTS_VEC rules; rules.push_back (ptr_rule_object); - _wfp_create4filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create4filters (hengine, rules, __LINE__); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); return FALSE; } - else if ((ctrl_id >= IDX_TIMER && ctrl_id <= INT (IDX_TIMER + timers.size ()))) + else if ((ctrl_id >= IDX_TIMER && ctrl_id <= (IDX_TIMER + (INT)timers.size ()))) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (!listview_id || !SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0)) return FALSE; - const size_t timer_idx = (ctrl_id - IDX_TIMER); - const time_t seconds = timers.at (timer_idx); + SIZE_T timer_idx = (ctrl_id - IDX_TIMER); + time_t seconds = timers.at (timer_idx); INT item = INVALID_INT; OBJECTS_VEC rules; while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); - + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -3228,17 +3227,21 @@ find_wrap: } else { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } - _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create3filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); return FALSE; } @@ -3248,7 +3251,7 @@ find_wrap: case IDCANCEL: // process Esc key case IDM_TRAY_SHOW: { - _r_wnd_toggle (hwnd, false); + _r_wnd_toggle (hwnd, FALSE); break; } @@ -3269,7 +3272,7 @@ find_wrap: case IDM_WEBSITE: case IDM_TRAY_WEBSITE: { - ShellExecute (hwnd, nullptr, _APP_WEBSITE_URL, nullptr, nullptr, SW_SHOWDEFAULT); + ShellExecute (hwnd, NULL, _APP_WEBSITE_URL, NULL, NULL, SW_SHOWDEFAULT); break; } @@ -3281,7 +3284,7 @@ find_wrap: case IDM_DONATE: { - ShellExecute (hwnd, nullptr, _r_fmt (_APP_DONATE_URL, APP_NAME_SHORT), nullptr, nullptr, SW_SHOWDEFAULT); + ShellExecute (hwnd, NULL, _r_fmt (_APP_DONATE_URL, APP_NAME_SHORT), NULL, NULL, SW_SHOWDEFAULT); break; } @@ -3295,17 +3298,17 @@ find_wrap: case IDM_IMPORT: { WCHAR path[MAX_PATH] = {0}; - _r_str_copy (path, _countof (path), XML_PROFILE); + _r_str_copy (path, RTL_NUMBER_OF (path), XML_PROFILE); WCHAR title[MAX_PATH] = {0}; - _r_str_printf (title, _countof (title), L"%s %s...", app.LocaleString (IDS_IMPORT, nullptr).GetString (), path); + _r_str_printf (title, RTL_NUMBER_OF (title), L"%s %s...", app.LocaleString (IDS_IMPORT, NULL).GetString (), path); OPENFILENAME ofn = {0}; ofn.lStructSize = sizeof (ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = path; - ofn.nMaxFile = _countof (path); + ofn.nMaxFile = RTL_NUMBER_OF (path); ofn.lpstrFilter = L"*.xml;*.xml.bak\0*.xml;*.xml.bak\0*.*\0*.*\0\0"; ofn.lpstrDefExt = L"xml"; ofn.lpstrTitle = title; @@ -3313,18 +3316,18 @@ find_wrap: if (GetOpenFileName (&ofn)) { - if (!_app_profile_load_check (path, XmlProfileV3, true)) + if (!_app_profile_load_check (path, XmlProfileV3, TRUE)) { - app.ShowErrorMessage (hwnd, L"Profile loading error!", ERROR_INVALID_DATA, nullptr); + app.ShowErrorMessage (hwnd, L"Profile loading error!", ERROR_INVALID_DATA, NULL); } else { _app_profile_save (config.profile_path_backup); // made backup _app_profile_load (hwnd, path); // load profile - _app_refreshstatus (hwnd); + _app_refreshstatus (hwnd, INVALID_INT); - _app_changefilters (hwnd, true, false); + _app_changefilters (hwnd, TRUE, FALSE); } } @@ -3334,17 +3337,17 @@ find_wrap: case IDM_EXPORT: { WCHAR path[MAX_PATH] = {0}; - _r_str_copy (path, _countof (path), XML_PROFILE); + _r_str_copy (path, RTL_NUMBER_OF (path), XML_PROFILE); WCHAR title[MAX_PATH] = {0}; - _r_str_printf (title, _countof (title), L"%s %s...", app.LocaleString (IDS_EXPORT, nullptr).GetString (), path); + _r_str_printf (title, RTL_NUMBER_OF (title), L"%s %s...", app.LocaleString (IDS_EXPORT, NULL).GetString (), path); OPENFILENAME ofn = {0}; ofn.lStructSize = sizeof (ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = path; - ofn.nMaxFile = _countof (path); + ofn.nMaxFile = RTL_NUMBER_OF (path); ofn.lpstrFilter = L"*.xml\0*.xml\0\0"; ofn.lpstrDefExt = L"xml"; ofn.lpstrTitle = title; @@ -3360,10 +3363,10 @@ find_wrap: case IDM_ALWAYSONTOP_CHK: { - const bool new_val = !app.ConfigGet (L"AlwaysOnTop", _APP_ALWAYSONTOP).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"AlwaysOnTop", _APP_ALWAYSONTOP); _r_menu_checkitem (GetMenu (hwnd), ctrl_id, 0, MF_BYCOMMAND, new_val); - app.ConfigSet (L"AlwaysOnTop", new_val); + app.ConfigSetBoolean (L"AlwaysOnTop", new_val); _r_wnd_top (hwnd, new_val); @@ -3372,44 +3375,44 @@ find_wrap: case IDM_AUTOSIZECOLUMNS_CHK: { - const bool new_val = !app.ConfigGet (L"AutoSizeColumns", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"AutoSizeColumns", TRUE); _r_menu_checkitem (GetMenu (hwnd), ctrl_id, 0, MF_BYCOMMAND, new_val); - app.ConfigSet (L"AutoSizeColumns", new_val); + app.ConfigSetBoolean (L"AutoSizeColumns", new_val); if (new_val) - _app_listviewresize (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT), false); + _app_listviewresize (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT), FALSE); break; } case IDM_SHOWFILENAMESONLY_CHK: { - const bool new_val = !app.ConfigGet (L"ShowFilenames", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"ShowFilenames", TRUE); _r_menu_checkitem (GetMenu (hwnd), ctrl_id, 0, MF_BYCOMMAND, new_val); - app.ConfigSet (L"ShowFilenames", new_val); + app.ConfigSetBoolean (L"ShowFilenames", new_val); // regroup apps - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { _app_getdisplayname (app_hash, ptr_app, &ptr_app->display_name); - const INT listview_id = _app_getlistview_id (ptr_app->type); + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { - const INT item_pos = _app_getposition (hwnd, listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -3420,39 +3423,39 @@ find_wrap: } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - _app_listviewsort (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)); + _app_listviewsort (hwnd, (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT), INVALID_INT, FALSE); break; } case IDM_ENABLESPECIALGROUP_CHK: { - const bool new_val = !app.ConfigGet (L"IsEnableSpecialGroup", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsEnableSpecialGroup", TRUE); _r_menu_checkitem (GetMenu (hwnd), ctrl_id, 0, MF_BYCOMMAND, new_val); - app.ConfigSet (L"IsEnableSpecialGroup", new_val); + app.ConfigSetBoolean (L"IsEnableSpecialGroup", new_val); // regroup apps - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { - const INT listview_id = _app_getlistview_id (ptr_app->type); + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { - const INT item_pos = _app_getposition (hwnd, listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -3463,14 +3466,14 @@ find_wrap: } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); } @@ -3493,16 +3496,16 @@ find_wrap: view_type = LV_VIEW_DETAILS; _r_menu_checkitem (GetMenu (hwnd), IDM_VIEW_ICON, IDM_VIEW_TILE, MF_BYCOMMAND, ctrl_id); - app.ConfigSet (L"ViewType", view_type); + app.ConfigSetInteger (L"ViewType", view_type); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { _app_listviewsetview (hwnd, listview_id); - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); - _r_listview_redraw (hwnd, listview_id); + _r_listview_redraw (hwnd, listview_id, INVALID_INT); } break; @@ -3524,16 +3527,16 @@ find_wrap: icon_size = SHIL_SYSSMALL; _r_menu_checkitem (GetMenu (hwnd), IDM_SIZE_SMALL, IDM_SIZE_EXTRALARGE, MF_BYCOMMAND, ctrl_id); - app.ConfigSet (L"IconSize", icon_size); + app.ConfigSetInteger (L"IconSize", icon_size); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { _app_listviewsetview (hwnd, listview_id); - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); - _r_listview_redraw (hwnd, listview_id); + _r_listview_redraw (hwnd, listview_id, INVALID_INT); } break; @@ -3541,28 +3544,28 @@ find_wrap: case IDM_ICONSISHIDDEN: { - const bool new_val = !app.ConfigGet (L"IsIconsHidden", false).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsIconsHidden", FALSE); _r_menu_checkitem (GetMenu (hwnd), ctrl_id, 0, MF_BYCOMMAND, new_val); - app.ConfigSet (L"IsIconsHidden", new_val); + app.ConfigSetBoolean (L"IsIconsHidden", new_val); - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { - const INT listview_id = _app_getlistview_id (ptr_app->type); + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { - const INT item_pos = _app_getposition (hwnd, listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -3573,7 +3576,7 @@ find_wrap: } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } break; @@ -3596,7 +3599,7 @@ find_wrap: if (ChooseFont (&cf)) { - app.ConfigSet (L"Font", !_r_str_isempty (lf.lfFaceName) ? _r_fmt (L"%s;%d;%d", lf.lfFaceName, _r_dc_fontheighttosize (hwnd, lf.lfHeight), lf.lfWeight) : UI_FONT_DEFAULT); + app.ConfigSetString (L"Font", !_r_str_isempty (lf.lfFaceName) ? _r_fmt (L"%s;%d;%d", lf.lfFaceName, _r_dc_fontheighttosize (hwnd, lf.lfHeight), lf.lfWeight) : UI_FONT_DEFAULT); SAFE_DELETE_OBJECT (config.hfont); @@ -3604,19 +3607,19 @@ find_wrap: for (INT i = 0; i < (INT)SendDlgItemMessage (hwnd, IDC_TAB, TCM_GETITEMCOUNT, 0, 0); i++) { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, i); if (listview_id) { - _app_listviewsetfont (hwnd, listview_id, false); + _app_listviewsetfont (hwnd, listview_id, FALSE); if (i == current_page) - _app_listviewresize (hwnd, listview_id, false); + _app_listviewresize (hwnd, listview_id, FALSE); } } - RedrawWindow (hwnd, nullptr, nullptr, RDW_NOFRAME | RDW_NOINTERNALPAINT | RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN); + RedrawWindow (hwnd, NULL, NULL, RDW_NOFRAME | RDW_NOINTERNALPAINT | RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN); } break; @@ -3631,7 +3634,7 @@ find_wrap: fr.lStructSize = sizeof (fr); fr.hwndOwner = hwnd; fr.lpstrFindWhat = config.search_string; - fr.wFindWhatLen = _countof (config.search_string) - 1; + fr.wFindWhatLen = RTL_NUMBER_OF (config.search_string) - 1; fr.Flags = FR_HIDEWHOLEWORD | FR_HIDEMATCHCASE | FR_HIDEUPDOWN; config.hfind = FindText (&fr); @@ -3670,10 +3673,10 @@ find_wrap: app.ConfigInit (); - _app_profile_load (hwnd); - _app_refreshstatus (hwnd); + _app_profile_load (hwnd, NULL); + _app_refreshstatus (hwnd, INVALID_INT); - _app_changefilters (hwnd, true, false); + _app_changefilters (hwnd, TRUE, FALSE); break; } @@ -3703,37 +3706,37 @@ find_wrap: case IDM_BLOCKLIST_EXTRA_ALLOW: case IDM_BLOCKLIST_EXTRA_BLOCK: { - const HMENU hmenu = GetMenu (hwnd); + HMENU hmenu = GetMenu (hwnd); if (ctrl_id >= IDM_BLOCKLIST_SPY_DISABLE && ctrl_id <= IDM_BLOCKLIST_SPY_BLOCK) { _r_menu_checkitem (hmenu, IDM_BLOCKLIST_SPY_DISABLE, IDM_BLOCKLIST_SPY_BLOCK, MF_BYCOMMAND, ctrl_id); - const INT new_state = std::clamp (ctrl_id - IDM_BLOCKLIST_SPY_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, ctrl_id - IDM_BLOCKLIST_SPY_DISABLE, 0, 2); - app.ConfigSet (L"BlocklistSpyState", new_state); + app.ConfigSetInteger (L"BlocklistSpyState", new_state); - _app_ruleblocklistset (hwnd, new_state, INVALID_INT, INVALID_INT, true); + _app_ruleblocklistset (hwnd, new_state, INVALID_INT, INVALID_INT, TRUE); } else if (ctrl_id >= IDM_BLOCKLIST_UPDATE_DISABLE && ctrl_id <= IDM_BLOCKLIST_UPDATE_BLOCK) { _r_menu_checkitem (hmenu, IDM_BLOCKLIST_UPDATE_DISABLE, IDM_BLOCKLIST_UPDATE_BLOCK, MF_BYCOMMAND, ctrl_id); - const INT new_state = std::clamp (ctrl_id - IDM_BLOCKLIST_UPDATE_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, ctrl_id - IDM_BLOCKLIST_UPDATE_DISABLE, 0, 2); - app.ConfigSet (L"BlocklistUpdateState", new_state); + app.ConfigSetInteger (L"BlocklistUpdateState", new_state); - _app_ruleblocklistset (hwnd, INVALID_INT, new_state, INVALID_INT, true); + _app_ruleblocklistset (hwnd, INVALID_INT, new_state, INVALID_INT, TRUE); } else if (ctrl_id >= IDM_BLOCKLIST_EXTRA_DISABLE && ctrl_id <= IDM_BLOCKLIST_EXTRA_BLOCK) { _r_menu_checkitem (hmenu, IDM_BLOCKLIST_EXTRA_DISABLE, IDM_BLOCKLIST_EXTRA_BLOCK, MF_BYCOMMAND, ctrl_id); - const INT new_state = std::clamp (ctrl_id - IDM_BLOCKLIST_EXTRA_DISABLE, 0, 2); + INT new_state = _r_calc_clamp (INT, ctrl_id - IDM_BLOCKLIST_EXTRA_DISABLE, 0, 2); - app.ConfigSet (L"BlocklistExtraState", new_state); + app.ConfigSetInteger (L"BlocklistExtraState", new_state); - _app_ruleblocklistset (hwnd, INVALID_INT, INVALID_INT, new_state, true); + _app_ruleblocklistset (hwnd, INVALID_INT, INVALID_INT, new_state, TRUE); } break; @@ -3741,10 +3744,10 @@ find_wrap: case IDM_TRAY_ENABLELOG_CHK: { - const bool new_val = !app.ConfigGet (L"IsLogEnabled", false).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsLogEnabled", FALSE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, nullptr, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); - app.ConfigSet (L"IsLogEnabled", new_val); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, NULL, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); + app.ConfigSetBoolean (L"IsLogEnabled", new_val); _app_loginit (new_val); @@ -3753,56 +3756,56 @@ find_wrap: case IDM_TRAY_ENABLEUILOG_CHK: { - const bool new_val = !app.ConfigGet (L"IsLogUiEnabled", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, nullptr, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); - app.ConfigSet (L"IsLogUiEnabled", new_val); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, NULL, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); + app.ConfigSetBoolean (L"IsLogUiEnabled", new_val); break; } case IDM_TRAY_ENABLENOTIFICATIONS_CHK: { - const bool new_val = !app.ConfigGet (L"IsNotificationsEnabled", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE); - _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, nullptr, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED); - app.ConfigSet (L"IsNotificationsEnabled", new_val); + _r_toolbar_setbutton (config.hrebar, IDC_TOOLBAR, ctrl_id, NULL, 0, new_val ? TBSTATE_PRESSED | TBSTATE_ENABLED : TBSTATE_ENABLED, I_IMAGENONE); + app.ConfigSetBoolean (L"IsNotificationsEnabled", new_val); - _app_notifyrefresh (config.hnotification, true); + _app_notifyrefresh (config.hnotification, TRUE); break; } case IDM_TRAY_ENABLENOTIFICATIONSSOUND_CHK: { - const bool new_val = !app.ConfigGet (L"IsNotificationsSound", true).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsNotificationsSound", TRUE); - app.ConfigSet (L"IsNotificationsSound", new_val); + app.ConfigSetBoolean (L"IsNotificationsSound", new_val); break; } case IDM_TRAY_NOTIFICATIONONTRAY_CHK: { - const bool new_val = !app.ConfigGet (L"IsNotificationsOnTray", false).AsBool (); + BOOLEAN new_val = !app.ConfigGetBoolean (L"IsNotificationsOnTray", FALSE); - app.ConfigSet (L"IsNotificationsOnTray", new_val); + app.ConfigSetBoolean (L"IsNotificationsOnTray", new_val); if (IsWindowVisible (config.hnotification)) - _app_notifysetpos (config.hnotification, true); + _app_notifysetpos (config.hnotification, TRUE); break; } case IDM_TRAY_LOGSHOW: { - if (app.ConfigGet (L"IsLogUiEnabled", true).AsBool ()) + if (app.ConfigGetBoolean (L"IsLogUiEnabled", FALSE)) { - _r_wnd_toggle (hwnd, true); + _r_wnd_toggle (hwnd, TRUE); if (!log_arr.empty ()) { - _app_showitem (hwnd, IDC_LOG, _app_getposition (hwnd, IDC_LOG, (log_arr.size () - 1))); + _app_showitem (hwnd, IDC_LOG, _app_getposition (hwnd, IDC_LOG, (log_arr.size () - 1)), INVALID_INT); } else { @@ -3811,7 +3814,7 @@ find_wrap: } else { - const rstring path = _r_path_expand (app.ConfigGet (L"LogPath", LOG_PATH_DEFAULT)); + rstring path = _r_path_expand (app.ConfigGetString (L"LogPath", LOG_PATH_DEFAULT)); if (!_r_fs_exists (path)) return FALSE; @@ -3819,7 +3822,7 @@ find_wrap: if (_r_fs_isvalidhandle (config.hlogfile)) FlushFileBuffers (config.hlogfile); - _r_run (nullptr, _r_fmt (L"%s \"%s\"", _app_getlogviewer ().GetString (), path.GetString ())); + _r_sys_createprocess (NULL, _r_fmt (L"%s \"%s\"", _app_getlogviewer ().GetString (), path.GetString ()), NULL); } break; @@ -3827,13 +3830,12 @@ find_wrap: case IDM_TRAY_LOGCLEAR: { - const rstring path = _r_path_expand (app.ConfigGet (L"LogPath", LOG_PATH_DEFAULT)); + rstring path = _r_path_expand (app.ConfigGetString (L"LogPath", LOG_PATH_DEFAULT)); + BOOLEAN is_validhandle = _r_fs_isvalidhandle (config.hlogfile); - const bool is_validhandle = _r_fs_isvalidhandle (config.hlogfile); - - if ((is_validhandle && _r_fs_size (config.hlogfile) != (LONG64)((_r_str_length (SZ_LOG_TITLE) + 1) * sizeof (WCHAR))) || (!is_validhandle && _r_fs_exists (path)) || !log_arr.empty ()) + if (is_validhandle || _r_fs_exists (path) || !log_arr.empty ()) { - if (!app.ShowConfirmMessage (hwnd, nullptr, app.LocaleString (IDS_QUESTION, nullptr), L"ConfirmLogClear")) + if (!app.ShowConfirmMessage (hwnd, NULL, app.LocaleString (IDS_QUESTION, NULL), L"ConfirmLogClear")) break; _app_freelogstack (); @@ -3850,14 +3852,14 @@ find_wrap: LPCWSTR path = app.GetLogPath (); if (_r_fs_exists (path)) - _r_run (nullptr, _r_fmt (L"%s \"%s\"", _app_getlogviewer ().GetString (), path)); + _r_sys_createprocess (NULL, _r_fmt (L"%s \"%s\"", _app_getlogviewer ().GetString (), path), NULL); break; } case IDM_TRAY_LOGCLEAR_ERR: { - if (!app.ShowConfirmMessage (hwnd, nullptr, app.LocaleString (IDS_QUESTION, nullptr), L"ConfirmLogClear")) + if (!app.ShowConfirmMessage (hwnd, NULL, app.LocaleString (IDS_QUESTION, NULL), L"ConfirmLogClear")) break; LPCWSTR path = app.GetLogPath (); @@ -3865,7 +3867,7 @@ find_wrap: if (!_r_fs_exists (path)) break; - _r_fs_remove (path, RFS_FORCEREMOVE); + _r_fs_remove (path, _R_FLAG_REMOVE_FORCE); break; } @@ -3875,10 +3877,10 @@ find_wrap: if (_wfp_isfiltersapplying ()) break; - const bool is_filtersinstalled = !(_wfp_isfiltersinstalled () != InstallDisabled); + BOOLEAN is_filtersinstalled = !(_wfp_isfiltersinstalled () != InstallDisabled); if (_app_installmessage (hwnd, is_filtersinstalled)) - _app_changefilters (hwnd, is_filtersinstalled, true); + _app_changefilters (hwnd, is_filtersinstalled, TRUE); break; } @@ -3891,23 +3893,23 @@ find_wrap: ofn.lStructSize = sizeof (ofn); ofn.hwndOwner = hwnd; ofn.lpstrFile = files; - ofn.nMaxFile = _countof (files); + ofn.nMaxFile = RTL_NUMBER_OF (files); ofn.lpstrFilter = L"*.exe\0*.exe\0*.*\0*.*\0\0"; ofn.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_ENABLESIZING | OFN_PATHMUSTEXIST | OFN_FORCESHOWHIDDEN; if (GetOpenFileName (&ofn)) { - size_t app_hash = 0; + SIZE_T app_hash = 0; if (files[ofn.nFileOffset - 1] != 0) { - app_hash = _app_addapplication (hwnd, files, 0, 0, 0, false, false); + app_hash = _app_addapplication (hwnd, files, 0, 0, 0, FALSE, FALSE); } else { LPWSTR p = files; WCHAR dir[MAX_PATH] = {0}; - GetCurrentDirectory (_countof (dir), dir); + GetCurrentDirectory (RTL_NUMBER_OF (dir), dir); while (*p) { @@ -3915,25 +3917,25 @@ find_wrap: if (*p) { - app_hash = _app_addapplication (hwnd, _r_fmt (L"%s\\%s", dir, p), 0, 0, 0, false, false); + app_hash = _app_addapplication (hwnd, _r_fmt (L"%s\\%s", dir, p), 0, 0, 0, FALSE, FALSE); } } } { - const INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (app_hash, InfoListviewId); if (app_listview_id) { if (app_listview_id == (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) - _app_listviewsort (hwnd, app_listview_id); + _app_listviewsort (hwnd, app_listview_id, INVALID_INT, FALSE); - _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, app_hash)); + _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, app_hash), INVALID_INT); } } - _app_refreshstatus (hwnd); - _app_profile_save (); + _app_refreshstatus (hwnd, INVALID_INT); + _app_profile_save (NULL); } break; @@ -3942,7 +3944,7 @@ find_wrap: case IDM_DISABLENOTIFICATIONS: case IDM_DISABLETIMER: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); // note: these commands only for profile... if (!(listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP)) @@ -3953,7 +3955,7 @@ find_wrap: while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -3968,7 +3970,7 @@ find_wrap: if (new_val == INVALID_INT) new_val = !ptr_app->is_silent; - if ((BOOL)ptr_app->is_silent != new_val) + if (ptr_app->is_silent != new_val) ptr_app->is_silent = new_val; if (new_val) @@ -3980,13 +3982,13 @@ find_wrap: } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); break; } @@ -3994,12 +3996,12 @@ find_wrap: case IDM_COPY: case IDM_COPY2: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); INT item = INVALID_INT; - const INT column_count = _r_listview_getcolumncount (hwnd, listview_id); - const INT column_current = (INT)lparam; - const rstring divider = _r_fmt (L"%c ", DIVIDER_COPY); + INT column_count = _r_listview_getcolumncount (hwnd, listview_id); + INT column_current = (INT)lparam; + rstring divider = _r_fmt (L"%c ", DIVIDER_COPY); rstring buffer; @@ -4029,10 +4031,10 @@ find_wrap: case IDM_CHECK: case IDM_UNCHECK: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - const bool new_val = (ctrl_id == IDM_CHECK) ? true : false; + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + BOOLEAN new_val = (ctrl_id == IDM_CHECK); - bool is_changed = false; + BOOLEAN is_changed = FALSE; if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { @@ -4041,7 +4043,7 @@ find_wrap: while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -4065,19 +4067,23 @@ find_wrap: rules.push_back (ptr_app_object); - is_changed = true; + is_changed = TRUE; // do not reset reference counter } else { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } if (is_changed) { - _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create3filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); } } @@ -4088,7 +4094,7 @@ find_wrap: while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t rule_idx = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T rule_idx = _r_listview_getitemlparam (hwnd, listview_id, item); PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) @@ -4101,34 +4107,38 @@ find_wrap: _app_ruleenable (ptr_rule, new_val); _r_fastlock_acquireshared (&lock_checkbox); - _app_setruleiteminfo (hwnd, listview_id, item, ptr_rule, true); + _app_setruleiteminfo (hwnd, listview_id, item, ptr_rule, TRUE); _r_fastlock_releaseshared (&lock_checkbox); rules.push_back (ptr_rule_object); - is_changed = true; + is_changed = TRUE; // do not reset reference counter } else { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } if (is_changed) { - _wfp_create4filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create4filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); } } if (is_changed) { - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } break; @@ -4143,14 +4153,14 @@ find_wrap: case IDM_OPENRULESEDITOR: { PITEM_RULE ptr_rule = new ITEM_RULE; - PR_OBJECT ptr_rule_object = _r_obj_allocate (ptr_rule, &_app_dereferencerule); + PR_OBJECT ptr_rule_object = _r_obj2_allocateex (ptr_rule, &_app_dereferencerule); - _app_ruleenable (ptr_rule, true); + _app_ruleenable (ptr_rule, TRUE); ptr_rule->type = DataRuleCustom; - ptr_rule->is_block = false; + ptr_rule->is_block = FALSE; - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) { @@ -4158,141 +4168,131 @@ find_wrap: while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); if (_app_isappfound (app_hash)) - ptr_rule->apps[app_hash] = true; + ptr_rule->apps[app_hash] = TRUE; } } else if (listview_id == IDC_NETWORK) { - ptr_rule->is_block = true; + ptr_rule->is_block = TRUE; - const INT item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); + INT item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); if (item != INVALID_INT) { - const size_t network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); - PR_OBJECT ptr_network_object = _app_getnetworkitem (network_hash); + SIZE_T network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + PITEM_NETWORK ptr_network = _app_getnetworkitem (network_hash); - if (ptr_network_object) + if (ptr_network) { - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network) + if (_r_str_isempty (ptr_rule->pname)) { - if (_r_str_isempty (ptr_rule->pname)) - { - const rstring item_text = _r_listview_getitemtext (hwnd, listview_id, item, 0); + rstring item_text = _r_listview_getitemtext (hwnd, listview_id, item, 0); - _r_str_alloc (&ptr_rule->pname, item_text.GetLength (), item_text); - } - - if (ptr_network->app_hash && !_r_str_isempty (ptr_network->path)) - { - if (!_app_isappfound (ptr_network->app_hash)) - { - _app_addapplication (hwnd, ptr_network->path, 0, 0, 0, false, false); - - _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); - } - - ptr_rule->apps[ptr_network->app_hash] = true; - } - - ptr_rule->protocol = ptr_network->protocol; - - _app_formataddress (ptr_network->af, 0, &ptr_network->remote_addr, ptr_network->remote_port, &ptr_rule->prule_remote, FMTADDR_AS_RULE); - _app_formataddress (ptr_network->af, 0, &ptr_network->local_addr, ptr_network->local_port, &ptr_rule->prule_local, FMTADDR_AS_RULE); + _r_str_alloc (&ptr_rule->pname, item_text.GetLength (), item_text); } - _r_obj_dereference (ptr_network_object); + if (ptr_network->app_hash && !_r_str_isempty (ptr_network->path)) + { + if (!_app_isappfound (ptr_network->app_hash)) + { + _app_addapplication (hwnd, ptr_network->path, 0, 0, 0, FALSE, FALSE); + + _app_refreshstatus (hwnd, listview_id); + _app_profile_save (NULL); + } + + ptr_rule->apps[ptr_network->app_hash] = TRUE; + } + + ptr_rule->protocol = ptr_network->protocol; + + _app_formataddress (ptr_network->af, 0, &ptr_network->remote_addr, ptr_network->remote_port, &ptr_rule->prule_remote, FMTADDR_AS_RULE); + _app_formataddress (ptr_network->af, 0, &ptr_network->local_addr, ptr_network->local_port, &ptr_rule->prule_local, FMTADDR_AS_RULE); + + _r_obj_dereference (ptr_network); } } } else if (listview_id == IDC_LOG) { - ptr_rule->is_block = false; + //ptr_rule->is_block = FALSE; - const INT item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); + INT item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); if (item != INVALID_INT) { - const size_t log_idx = _r_listview_getitemlparam (hwnd, listview_id, item); - PR_OBJECT ptr_log_object = _app_getlogitem (log_idx); + SIZE_T log_idx = _r_listview_getitemlparam (hwnd, listview_id, item); + PITEM_LOG ptr_log = _app_getlogitem (log_idx); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - - if (ptr_log) + if (_r_str_isempty (ptr_rule->pname)) { - if (_r_str_isempty (ptr_rule->pname)) - { - const rstring item_text = _r_listview_getitemtext (hwnd, listview_id, item, 0); + rstring item_text = _r_listview_getitemtext (hwnd, listview_id, item, 0); - _r_str_alloc (&ptr_rule->pname, item_text.GetLength (), item_text); - } - - if (ptr_log->app_hash && !_r_str_isempty (ptr_log->path)) - { - if (!_app_isappfound (ptr_log->app_hash)) - { - _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, false, false); - - _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); - } - - ptr_rule->apps[ptr_log->app_hash] = true; - } - - ptr_rule->protocol = ptr_log->protocol; - ptr_rule->direction = ptr_log->direction; - - _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, ptr_log->remote_port, &ptr_rule->prule_remote, FMTADDR_AS_RULE); - _app_formataddress (ptr_log->af, 0, &ptr_log->local_addr, ptr_log->local_port, &ptr_rule->prule_local, FMTADDR_AS_RULE); + _r_str_alloc (&ptr_rule->pname, item_text.GetLength (), item_text); } - _r_obj_dereference (ptr_log_object); + if (ptr_log->app_hash && !_r_str_isempty (ptr_log->path)) + { + if (!_app_isappfound (ptr_log->app_hash)) + { + _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, FALSE, FALSE); + + _app_refreshstatus (hwnd, listview_id); + _app_profile_save (NULL); + } + + ptr_rule->apps[ptr_log->app_hash] = TRUE; + } + + ptr_rule->protocol = ptr_log->protocol; + ptr_rule->direction = ptr_log->direction; + + _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, ptr_log->remote_port, &ptr_rule->prule_remote, FMTADDR_AS_RULE); + _app_formataddress (ptr_log->af, 0, &ptr_log->local_addr, ptr_log->local_port, &ptr_rule->prule_local, FMTADDR_AS_RULE); + + _r_obj_dereference (ptr_log); } } } - if (DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR), hwnd, &EditorProc, (LPARAM)ptr_rule_object)) + if (DialogBoxParam (NULL, MAKEINTRESOURCE (IDD_EDITOR), hwnd, &EditorProc, (LPARAM)ptr_rule_object)) { - const size_t rule_idx = rules_arr.size (); - rules_arr.push_back (_r_obj_reference (ptr_rule_object)); + SIZE_T rule_idx = rules_arr.size (); + rules_arr.push_back (_r_obj2_reference (ptr_rule_object)); - const INT listview_rules_id = _app_getlistview_id (DataRuleCustom); + INT listview_rules_id = _app_getlistview_id (DataRuleCustom); if (listview_rules_id) { - const INT item_id = _r_listview_getitemcount (hwnd, listview_rules_id); + INT item_id = _r_listview_getitemcount (hwnd, listview_rules_id, FALSE); _r_fastlock_acquireshared (&lock_checkbox); _r_listview_additem (hwnd, listview_rules_id, item_id, 0, ptr_rule->pname, _app_getruleicon (ptr_rule), _app_getrulegroup (ptr_rule), rule_idx); - _app_setruleiteminfo (hwnd, listview_rules_id, item_id, ptr_rule, true); + _app_setruleiteminfo (hwnd, listview_rules_id, item_id, ptr_rule, TRUE); _r_fastlock_releaseshared (&lock_checkbox); } - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); break; } case IDM_PROPERTIES: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); INT item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); if (item == INVALID_INT) @@ -4302,7 +4302,7 @@ find_wrap: { do { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, item); LPCWSTR path = (LPCWSTR)_app_getappinfo (app_hash, InfoPath); @@ -4313,88 +4313,84 @@ find_wrap: } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { - const size_t rule_idx = _r_listview_getitemlparam (hwnd, listview_id, item); + SIZE_T rule_idx = _r_listview_getitemlparam (hwnd, listview_id, item); PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) break; - if (DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR), hwnd, &EditorProc, (LPARAM)ptr_rule_object)) + if (DialogBoxParam (NULL, MAKEINTRESOURCE (IDD_EDITOR), hwnd, &EditorProc, (LPARAM)ptr_rule_object)) { PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) - _app_setruleiteminfo (hwnd, listview_id, item, ptr_rule, true); + _app_setruleiteminfo (hwnd, listview_id, item, ptr_rule, TRUE); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } else if (listview_id == IDC_NETWORK) { - const size_t network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); - PR_OBJECT ptr_network_object = _app_getnetworkitem (network_hash); + SIZE_T network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + PITEM_NETWORK ptr_network = _app_getnetworkitem (network_hash); - if (!ptr_network_object) + if (!ptr_network) break; - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network && ptr_network->app_hash && !_r_str_isempty (ptr_network->path)) + if (ptr_network->app_hash && !_r_str_isempty (ptr_network->path)) { if (!_app_isappfound (ptr_network->app_hash)) { - _app_addapplication (hwnd, ptr_network->path, 0, 0, 0, false, false); + _app_addapplication (hwnd, ptr_network->path, 0, 0, 0, FALSE, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } - const INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (ptr_network->app_hash, InfoListviewId); if (app_listview_id) { - _app_listviewsort (hwnd, app_listview_id); - _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, ptr_network->app_hash)); + _app_listviewsort (hwnd, app_listview_id, INVALID_INT, FALSE); + _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, ptr_network->app_hash), INVALID_INT); } } - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); } else if (listview_id == IDC_LOG) { - const size_t log_idx = _r_listview_getitemlparam (hwnd, listview_id, item); - PR_OBJECT ptr_log_object = _app_getlogitem (log_idx); + SIZE_T log_idx = _r_listview_getitemlparam (hwnd, listview_id, item); + PITEM_LOG ptr_log = _app_getlogitem (log_idx); - if (!ptr_log_object) + if (!ptr_log) break; - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - - if (ptr_log && ptr_log->app_hash && !_r_str_isempty (ptr_log->path)) + if (ptr_log->app_hash && !_r_str_isempty (ptr_log->path)) { if (!_app_isappfound (ptr_log->app_hash)) { - _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, false, false); + _app_addapplication (hwnd, ptr_log->path, 0, 0, 0, FALSE, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); } - const INT app_listview_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoListviewId); + INT app_listview_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoListviewId); if (app_listview_id) { - _app_listviewsort (hwnd, app_listview_id); - _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, ptr_log->app_hash)); + _app_listviewsort (hwnd, app_listview_id, INVALID_INT, FALSE); + _app_showitem (hwnd, app_listview_id, _app_getposition (hwnd, app_listview_id, ptr_log->app_hash), INVALID_INT); } } - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } break; @@ -4402,12 +4398,12 @@ find_wrap: case IDM_NETWORK_CLOSE: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id != IDC_NETWORK) break; - const INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); + INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); if (!selected) break; @@ -4418,39 +4414,34 @@ find_wrap: while ((item = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETNEXTITEM, (WPARAM)item, LVNI_SELECTED)) != INVALID_INT) { - const size_t network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); - PR_OBJECT ptr_network_object = _app_getnetworkitem (network_hash); + SIZE_T network_hash = _r_listview_getitemlparam (hwnd, listview_id, item); + PITEM_NETWORK ptr_network = _app_getnetworkitem (network_hash); - if (!ptr_network_object) + if (!ptr_network) continue; - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network) + if (ptr_network->af == AF_INET && ptr_network->state == MIB_TCP_STATE_ESTAB) { - if (ptr_network->af == AF_INET && ptr_network->state == MIB_TCP_STATE_ESTAB) + RtlSecureZeroMemory (&tcprow, sizeof (tcprow)); + + tcprow.dwState = MIB_TCP_STATE_DELETE_TCB; + tcprow.dwLocalAddr = ptr_network->local_addr.S_un.S_addr; + tcprow.dwLocalPort = _r_byteswap_ushort ((USHORT)ptr_network->local_port); + tcprow.dwRemoteAddr = ptr_network->remote_addr.S_un.S_addr; + tcprow.dwRemotePort = _r_byteswap_ushort ((USHORT)ptr_network->remote_port); + + if (SetTcpEntry (&tcprow) == NO_ERROR) { - RtlSecureZeroMemory (&tcprow, sizeof (tcprow)); + SendDlgItemMessage (hwnd, listview_id, LVM_DELETEITEM, (WPARAM)item, 0); - tcprow.dwState = MIB_TCP_STATE_DELETE_TCB; - tcprow.dwLocalAddr = ptr_network->local_addr.S_un.S_addr; - tcprow.dwLocalPort = _byteswap_ushort ((USHORT)ptr_network->local_port); - tcprow.dwRemoteAddr = ptr_network->remote_addr.S_un.S_addr; - tcprow.dwRemotePort = _byteswap_ushort ((USHORT)ptr_network->remote_port); + network_map.erase (network_hash); + _r_obj_dereferenceex (ptr_network, 2); - if (SetTcpEntry (&tcprow) == NO_ERROR) - { - SendDlgItemMessage (hwnd, listview_id, LVM_DELETEITEM, (WPARAM)item, 0); - - network_map.erase (network_hash); - _r_obj_dereferenceex (ptr_network_object, 2); - - continue; - } + continue; } } - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); } break; @@ -4458,27 +4449,27 @@ find_wrap: case IDM_DELETE: { - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id != IDC_APPS_PROFILE && listview_id != IDC_RULES_CUSTOM) break; - const INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); + INT selected = (INT)SendDlgItemMessage (hwnd, listview_id, LVM_GETSELECTEDCOUNT, 0, 0); - if (!selected || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, nullptr, nullptr, _r_fmt (app.LocaleString (IDS_QUESTION_DELETE, nullptr), selected)) != IDYES) + if (!selected || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, NULL, NULL, _r_fmt (app.LocaleString (IDS_QUESTION_DELETE, NULL), selected)) != IDYES) break; - const INT count = _r_listview_getitemcount (hwnd, listview_id) - 1; + INT count = _r_listview_getitemcount (hwnd, listview_id, FALSE) - 1; GUIDS_VEC guids; for (INT i = count; i != INVALID_INT; i--) { - if ((UINT)SendDlgItemMessage (hwnd, listview_id, LVM_GETITEMSTATE, i, LVNI_SELECTED) == LVNI_SELECTED) + if ((UINT)SendDlgItemMessage (hwnd, listview_id, LVM_GETITEMSTATE, (WPARAM)i, LVNI_SELECTED) == LVNI_SELECTED) { if (listview_id == IDC_APPS_PROFILE) { - const size_t app_hash = _r_listview_getitemlparam (hwnd, listview_id, i); + SIZE_T app_hash = _r_listview_getitemlparam (hwnd, listview_id, i); PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -4497,16 +4488,16 @@ find_wrap: _app_freeapplication (app_hash); - _r_obj_dereferenceex (ptr_app_object, 2); + _r_obj2_dereferenceex (ptr_app_object, 2); } else { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } else if (listview_id == IDC_RULES_CUSTOM) { - const size_t rule_idx = _r_listview_getitemlparam (hwnd, listview_id, i); + SIZE_T rule_idx = _r_listview_getitemlparam (hwnd, listview_id, i); PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) @@ -4520,23 +4511,23 @@ find_wrap: { guids.insert (guids.end (), ptr_rule->guids.begin (), ptr_rule->guids.end ()); - for (auto p : ptr_rule->apps) - apps_checker[p.first] = true; + for (auto &p : ptr_rule->apps) + apps_checker[p.first] = TRUE; SendDlgItemMessage (hwnd, listview_id, LVM_DELETEITEM, (WPARAM)i, 0); - rules_arr.at (rule_idx) = nullptr; + rules_arr.at (rule_idx) = NULL; - _r_obj_dereferenceex (ptr_rule_object, 2); + _r_obj2_dereferenceex (ptr_rule_object, 2); } else { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } - for (auto p : apps_checker) + for (auto &p : apps_checker) { - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -4546,11 +4537,11 @@ find_wrap: if (ptr_app) { - const INT app_listview_id = _app_getlistview_id (ptr_app->type); + INT app_listview_id = _app_getlistview_id (ptr_app->type); if (app_listview_id) { - const INT item_pos = _app_getposition (hwnd, app_listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, app_listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -4561,44 +4552,47 @@ find_wrap: } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } } } - _wfp_destroyfilters_array (_wfp_getenginehandle (), guids, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); - _app_refreshstatus (hwnd); - _app_profile_save (); + if (hengine) + _wfp_destroyfilters_array (hengine, guids, __LINE__); + + _app_refreshstatus (hwnd, INVALID_INT); + _app_profile_save (NULL); break; } case IDM_PURGE_UNUSED: { - bool is_deleted = false; + BOOLEAN is_deleted = FALSE; GUIDS_VEC guids; - std::vector apps_list; + std::vector apps_list; - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app && !ptr_app->is_undeletable && (!_app_isappexists (ptr_app) || ((ptr_app->type != DataAppService && ptr_app->type != DataAppUWP) && !_app_isappused (ptr_app, app_hash)))) { - const INT app_listview_id = _app_getlistview_id (ptr_app->type); + INT app_listview_id = _app_getlistview_id (ptr_app->type); if (app_listview_id) { - const INT item_pos = _app_getposition (hwnd, app_listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, app_listview_id, app_hash); if (item_pos != INVALID_INT) SendDlgItemMessage (hwnd, app_listview_id, LVM_DELETEITEM, (WPARAM)item_pos, 0); @@ -4611,21 +4605,24 @@ find_wrap: apps_list.push_back (app_hash); - is_deleted = true; + is_deleted = TRUE; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - for (auto p : apps_list) + for (auto &p : apps_list) _app_freeapplication (p); if (is_deleted) { - _wfp_destroyfilters_array (_wfp_getenginehandle (), guids, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); - _app_refreshstatus (hwnd); - _app_profile_save (); + if (hengine) + _wfp_destroyfilters_array (hengine, guids, __LINE__); + + _app_refreshstatus (hwnd, INVALID_INT); + _app_profile_save (NULL); } break; @@ -4633,14 +4630,14 @@ find_wrap: case IDM_PURGE_TIMERS: { - if (!_app_istimersactive () || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, nullptr, nullptr, app.LocaleString (IDS_QUESTION_TIMERS, nullptr)) != IDYES) + if (!_app_istimersactive () || app.ShowMessage (hwnd, MB_YESNO | MB_ICONEXCLAMATION, NULL, NULL, app.LocaleString (IDS_QUESTION_TIMERS, NULL)) != IDYES) break; OBJECTS_VEC rules; - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -4655,20 +4652,24 @@ find_wrap: } else { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } - _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create3filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); - _app_profile_save (); + _app_profile_save (NULL); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (listview_id) { - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); } @@ -4700,7 +4701,7 @@ find_wrap: case 998: { - PITEM_LOG ptr_log = new ITEM_LOG; + PITEM_LOG ptr_log = (PITEM_LOG)_r_obj_allocateex (sizeof (ITEM_LOG), &_app_dereferencelog); ptr_log->app_hash = config.my_hash; ptr_log->timestamp = _r_unixtime_now (); @@ -4730,10 +4731,10 @@ find_wrap: { ptr_app->last_notify = 0; - _app_notifyadd (config.hnotification, _r_obj_allocate (ptr_log, &_app_dereferencelog), ptr_app); + _app_notifyadd (config.hnotification, ptr_log, ptr_app); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } break; @@ -4741,7 +4742,7 @@ find_wrap: case 999: { - const UINT32 flags = FWPM_NET_EVENT_FLAG_APP_ID_SET | + UINT32 flags = FWPM_NET_EVENT_FLAG_APP_ID_SET | FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET | FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET | FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET | @@ -4762,35 +4763,40 @@ find_wrap: UINT16 layer_id = 0; UINT64 filter_id = 0; - FWPM_LAYER *layer = nullptr; - FWPM_FILTER *filter = nullptr; + HANDLE hengine = _wfp_getenginehandle (); - if (FwpmLayerGetByKey (config.hengine, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, &layer) == ERROR_SUCCESS && layer) - layer_id = layer->layerId; - - if (!filter_ids.empty ()) + if (hengine) { - if (FwpmFilterGetByKey (config.hengine, &filter_ids.at (filter_ids.size () - 1), &filter) == ERROR_SUCCESS && filter) - filter_id = filter->filterId; + FWPM_LAYER *layer = NULL; + FWPM_FILTER *filter = NULL; + + if (FwpmLayerGetByKey (hengine, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, &layer) == ERROR_SUCCESS && layer) + layer_id = layer->layerId; + + if (!filter_ids.empty ()) + { + if (FwpmFilterGetByKey (hengine, &filter_ids.at (filter_ids.size () - 1), &filter) == ERROR_SUCCESS && filter) + filter_id = filter->filterId; + } + + if (layer) + FwpmFreeMemory ((LPVOID*)&layer); + + if (filter) + FwpmFreeMemory ((LPVOID*)&filter); } - if (layer) - FwpmFreeMemory ((void **)&layer); - - if (filter) - FwpmFreeMemory ((void **)&filter); - - LPCWSTR terminator = nullptr; + LPCWSTR terminator = NULL; for (UINT i = 0; i < 255; i++) { RtlIpv4StringToAddress (_r_fmt (RM_AD2, i + 1), TRUE, &terminator, &ipv4_remote); RtlIpv4StringToAddress (_r_fmt (LM_AD2, i + 1), TRUE, &terminator, &ipv4_local); - UINT32 remote_addr = _byteswap_ulong (ipv4_remote.S_un.S_addr); - UINT32 local_addr = _byteswap_ulong (ipv4_local.S_un.S_addr); + UINT32 remote_addr = _r_byteswap_ulong (ipv4_remote.S_un.S_addr); + UINT32 local_addr = _r_byteswap_ulong (ipv4_local.S_un.S_addr); - _wfp_logcallback (flags, &ft, (UINT8*)path.GetString (), nullptr, (SID*)config.pbuiltin_admins_sid, IPPROTO_TCP, FWP_IP_VERSION_V4, remote_addr, nullptr, RP_AD, local_addr, nullptr, LP_AD, layer_id, filter_id, FWP_DIRECTION_OUTBOUND, false, false); + _wfp_logcallback (flags, &ft, (UINT8*)path.GetString (), NULL, (SID*)config.pbuiltin_admins_sid, IPPROTO_TCP, FWP_IP_VERSION_V4, remote_addr, NULL, RP_AD, local_addr, NULL, LP_AD, layer_id, filter_id, FWP_DIRECTION_OUTBOUND, FALSE, FALSE); } break; @@ -4805,7 +4811,7 @@ find_wrap: return FALSE; } -INT APIENTRY wWinMain (HINSTANCE, HINSTANCE, LPWSTR, INT) +INT APIENTRY wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, INT nCmdShow) { MSG msg = {0}; @@ -4818,27 +4824,27 @@ INT APIENTRY wWinMain (HINSTANCE, HINSTANCE, LPWSTR, INT) if (arga) { - bool is_install = false; - bool is_uninstall = false; - bool is_silent = false; - bool is_temporary = false; + BOOLEAN is_install = FALSE; + BOOLEAN is_uninstall = FALSE; + BOOLEAN is_silent = FALSE; + BOOLEAN is_temporary = FALSE; for (INT i = 0; i < numargs; i++) { - if (_r_str_compare (arga[i], L"/install", 8) == 0) - is_install = true; + if (_r_str_compare_length (arga[i], L"/install", 8) == 0) + is_install = TRUE; - else if (_r_str_compare (arga[i], L"/uninstall", 10) == 0) - is_uninstall = true; + else if (_r_str_compare_length (arga[i], L"/uninstall", 10) == 0) + is_uninstall = TRUE; - else if (_r_str_compare (arga[i], L"/silent", 7) == 0) - is_silent = true; + else if (_r_str_compare_length (arga[i], L"/silent", 7) == 0) + is_silent = TRUE; - else if (_r_str_compare (arga[i], L"/temp", 5) == 0) - is_temporary = true; + else if (_r_str_compare_length (arga[i], L"/temp", 5) == 0) + is_temporary = TRUE; } - SAFE_LOCAL_FREE (arga); + SAFE_DELETE_LOCAL (arga); if (is_install || is_uninstall) { @@ -4852,25 +4858,25 @@ INT APIENTRY wWinMain (HINSTANCE, HINSTANCE, LPWSTR, INT) { if (is_install) { - if (is_silent || ((_wfp_isfiltersinstalled () == InstallDisabled) && _app_installmessage (nullptr, true))) + if (is_silent || ((_wfp_isfiltersinstalled () == InstallDisabled) && _app_installmessage (NULL, TRUE))) { if (is_temporary) - config.is_filterstemporary = true; + config.is_filterstemporary = TRUE; - _app_profile_load (nullptr); + _app_profile_load (NULL, NULL); - if (_wfp_initialize (hengine, true)) + if (_wfp_initialize (hengine, TRUE)) _wfp_installfilters (hengine); - _wfp_uninitialize (hengine, false); + _wfp_uninitialize (hengine, FALSE); } } else if (is_uninstall) { - if (is_silent || ((_wfp_isfiltersinstalled () != InstallDisabled) && _app_installmessage (nullptr, false))) + if (is_silent || ((_wfp_isfiltersinstalled () != InstallDisabled) && _app_installmessage (NULL, FALSE))) { _wfp_destroyfilters (hengine); - _wfp_uninitialize (hengine, true); + _wfp_uninitialize (hengine, TRUE); } } } @@ -4887,11 +4893,11 @@ INT APIENTRY wWinMain (HINSTANCE, HINSTANCE, LPWSTR, INT) if (app.CreateMainWindow (IDD_MAIN, IDI_MAIN, &DlgProc)) { - const HACCEL haccel = LoadAccelerators (app.GetHINSTANCE (), MAKEINTRESOURCE (IDA_MAIN)); + HACCEL haccel = LoadAccelerators (app.GetHINSTANCE (), MAKEINTRESOURCE (IDA_MAIN)); if (haccel) { - while (GetMessage (&msg, nullptr, 0, 0) > 0) + while (GetMessage (&msg, NULL, 0, 0) > 0) { HWND hwnd = GetActiveWindow (); diff --git a/src/main.hpp b/src/main.hpp index 7aab9e9c..16d89b18 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -3,10 +3,8 @@ #pragma once -#include -#include - #include "routine.hpp" + #include "resource.hpp" #include "app.hpp" #include "global.hpp" @@ -24,36 +22,21 @@ #pragma comment(lib, "wintrust.lib") #pragma comment(lib, "windowscodecs.lib") + // guids -extern "C" { - static const GUID GUID_WfpProvider = - {0xb0d553e2, 0xc6a0, 0x4a9a, {0xae, 0xb8, 0xc7, 0x52, 0x48, 0x3e, 0xd6, 0x2f}}; +EXTERN_C static const GUID GUID_WfpProvider = {0xb0d553e2, 0xc6a0, 0x4a9a, {0xae, 0xb8, 0xc7, 0x52, 0x48, 0x3e, 0xd6, 0x2f}}; +EXTERN_C static const GUID GUID_WfpSublayer = {0x9fee6f59, 0xb951, 0x4f9a, {0xb5, 0x2f, 0x13, 0x3d, 0xcf, 0x7a, 0x42, 0x79}}; - static const GUID GUID_WfpSublayer = - {0x9fee6f59, 0xb951, 0x4f9a, {0xb5, 0x2f, 0x13, 0x3d, 0xcf, 0x7a, 0x42, 0x79}}; - - // deprecated and not used, but need for compatibility - static const GUID GUID_WfpOutboundCallout4_DEPRECATED = - {0xf1251f1a, 0xab09, 0x4ce7, {0xba, 0xe3, 0x6c, 0xcc, 0xce, 0xf2, 0xc8, 0xca}}; - - static const GUID GUID_WfpOutboundCallout6_DEPRECATED = - {0xfd497f2e, 0x46f5, 0x486d, {0xb0, 0xc, 0x3f, 0x7f, 0xe0, 0x7a, 0x94, 0xa6}}; - - static const GUID GUID_WfpInboundCallout4_DEPRECATED = - {0xefc879ce, 0x3066, 0x45bb, {0x8a, 0x70, 0x17, 0xfe, 0x29, 0x78, 0x53, 0xc0}}; - - static const GUID GUID_WfpInboundCallout6_DEPRECATED = - {0xd0420299, 0x52d8, 0x4f18, {0xbc, 0x80, 0x47, 0x3a, 0x24, 0x93, 0xf2, 0x69}}; - - static const GUID GUID_WfpListenCallout4_DEPRECATED = - {0x51fa679d, 0x578b, 0x4835, {0xa6, 0x3e, 0xca, 0xd7, 0x68, 0x7f, 0x74, 0x95}}; - - static const GUID GUID_WfpListenCallout6_DEPRECATED = - {0xa02187ca, 0xe655, 0x4adb, {0xa1, 0xf2, 0x47, 0xa2, 0xc9, 0x78, 0xf9, 0xce}}; -}; +// deprecated and not used, but need for compatibility +EXTERN_C static GUID GUID_WfpOutboundCallout4_DEPRECATED = {0xf1251f1a, 0xab09, 0x4ce7, {0xba, 0xe3, 0x6c, 0xcc, 0xce, 0xf2, 0xc8, 0xca}}; +EXTERN_C static GUID GUID_WfpOutboundCallout6_DEPRECATED = {0xfd497f2e, 0x46f5, 0x486d, {0xb0, 0xc, 0x3f, 0x7f, 0xe0, 0x7a, 0x94, 0xa6}}; +EXTERN_C static GUID GUID_WfpInboundCallout4_DEPRECATED = {0xefc879ce, 0x3066, 0x45bb, {0x8a, 0x70, 0x17, 0xfe, 0x29, 0x78, 0x53, 0xc0}}; +EXTERN_C static GUID GUID_WfpInboundCallout6_DEPRECATED = {0xd0420299, 0x52d8, 0x4f18, {0xbc, 0x80, 0x47, 0x3a, 0x24, 0x93, 0xf2, 0x69}}; +EXTERN_C static GUID GUID_WfpListenCallout4_DEPRECATED = {0x51fa679d, 0x578b, 0x4835, {0xa6, 0x3e, 0xca, 0xd7, 0x68, 0x7f, 0x74, 0x95}}; +EXTERN_C static GUID GUID_WfpListenCallout6_DEPRECATED = {0xa02187ca, 0xe655, 0x4adb, {0xa1, 0xf2, 0x47, 0xa2, 0xc9, 0x78, 0xf9, 0xce}}; // enums -enum EnumDataType +typedef enum _ENUM_TYPE_DATA { DataUnknown, DataAppRegular, @@ -69,18 +52,18 @@ enum EnumDataType DataTypePort, DataTypeIp, DataTypeHost, -}; +} ENUM_TYPE_DATA; -enum EnumXmlType +typedef enum _ENUM_TYPE_XML { XmlApps = 0, XmlRules = 1, XmlRulesConfig = 2, XmlProfileV3 = 3, XmlProfileInternalV3 = 4, -}; +} ENUM_TYPE_XML; -enum EnumInfo +typedef enum _ENUM_INFO_DATA { InfoName = 0, InfoPath = 1, @@ -90,14 +73,14 @@ enum EnumInfo InfoListviewId = 5, InfoIsSilent = 6, InfoIsUndeletable = 7, -}; +} ENUM_INFO_DATA; -enum EnumInstall +typedef enum _ENUM_INSTALL_TYPE { InstallDisabled = 0, InstallEnabled = 1, InstallEnabledTemporary = 2, -}; +} ENUM_INSTALL_TYPE; // config #define LANG_MENU 6 @@ -109,10 +92,6 @@ enum EnumInstall #define XML_PROFILE L"profile.xml" #define XML_PROFILE_INTERNAL L"profile_internal.xml" -#define XML_APPS L"apps.xml" -#define XML_RULES_CONFIG L"rules_config.xml" -#define XML_RULES_CUSTOM L"rules_custom.xml" - #define LOG_PATH_EXT L"log" #define LOG_PATH_DEFAULT L"%USERPROFILE%\\" APP_NAME_SHORT L"." LOG_PATH_EXT #define LOG_VIEWER_DEFAULT L"%SystemRoot%\\notepad.exe" @@ -133,9 +112,7 @@ enum EnumInstall #define WINDOWSSPYBLOCKER_URL L"https://github.com/crazy-max/WindowsSpyBlocker" #define BOOTTIME_FILTER_NAME L"Boot-time filter" -#define SUBLAYER_WEIGHT_DEFAULT 65534U - -#define SERVICE_SECURITY_DESCRIPTOR L"O:SYG:SYD:(A;;CCRC;;;%s)" +#define SUBLAYER_WEIGHT_DEFAULT 0xFFFE #define DIVIDER_COPY L',' #define DIVIDER_CSV L"," @@ -158,10 +135,11 @@ enum EnumInstall #define SZ_STATE_BLOCK L"Blocked" #define SZ_DIRECTION_IN L"Inbound" #define SZ_DIRECTION_OUT L"Outbound" +#define SZ_DIRECTION_ANY L"Any" #define SZ_DIRECTION_LOOPBACK L"-Loopback" #define SZ_LOG_TITLE L"Date" DIVIDER_CSV L"User" DIVIDER_CSV L"Path" DIVIDER_CSV L"Address (" SZ_DIRECTION_LOCAL L")" DIVIDER_CSV L"Port (" SZ_DIRECTION_LOCAL L")" DIVIDER_CSV L"Address (" SZ_DIRECTION_REMOTE L")" DIVIDER_CSV L"Port (" SZ_DIRECTION_REMOTE L")" DIVIDER_CSV L"Protocol" DIVIDER_CSV L"Filter name" DIVIDER_CSV L"Filter ID" DIVIDER_CSV L"Direction" DIVIDER_CSV L"State\r\n" -#define SZ_LOG_BODY L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"#%" PRIu64 L"\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"\r\n" +#define SZ_LOG_BODY L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"#%" TEXT (PRIu64) L"\"" DIVIDER_CSV L"\"%s\"" DIVIDER_CSV L"\"%s\"\r\n" #define UI_FONT L"Segoe UI" #define UI_FONT_NOTIFICATION L"Calibri" @@ -208,14 +186,14 @@ enum EnumInstall #define LISTVIEW_COLOR_CONNECTION RGB(255, 168, 242) // filter weights -#define FILTER_WEIGHT_HIGHEST_IMPORTANT 0xF -#define FILTER_WEIGHT_HIGHEST 0xE -#define FILTER_WEIGHT_BLOCKLIST 0xD -#define FILTER_WEIGHT_CUSTOM_BLOCK 0xC -#define FILTER_WEIGHT_CUSTOM 0xB -#define FILTER_WEIGHT_SYSTEM 0xA -#define FILTER_WEIGHT_APPLICATION 0x9 -#define FILTER_WEIGHT_LOWEST 0x8 +#define FILTER_WEIGHT_HIGHEST_IMPORTANT 0x0F +#define FILTER_WEIGHT_HIGHEST 0x0E +#define FILTER_WEIGHT_BLOCKLIST 0x0D +#define FILTER_WEIGHT_CUSTOM_BLOCK 0x0C +#define FILTER_WEIGHT_CUSTOM 0x0B +#define FILTER_WEIGHT_SYSTEM 0x0A +#define FILTER_WEIGHT_APPLICATION 0x09 +#define FILTER_WEIGHT_LOWEST 0x08 // memory limitation for 1 rule #define RULE_NAME_CCH_MAX 64 @@ -223,12 +201,12 @@ enum EnumInstall typedef std::vector OBJECTS_VEC; typedef std::vector THREADS_VEC; -typedef std::unordered_map OBJECTS_MAP; -typedef std::unordered_map TYPES_MAP; -typedef std::unordered_map HASHER_MAP; typedef std::vector GUIDS_VEC; +typedef std::unordered_map OBJECTS_MAP; +typedef std::unordered_map TYPES_MAP; +typedef std::unordered_map HASHER_MAP; -struct STATIC_DATA +typedef struct tagSTATIC_DATA { WCHAR profile_path[MAX_PATH] = {0}; WCHAR profile_path_backup[MAX_PATH] = {0}; @@ -238,82 +216,116 @@ struct STATIC_DATA WCHAR search_string[128] = {0}; - PSID pbuiltin_current_sid = nullptr; - PSID pbuiltin_world_sid = nullptr; - PSID pbuiltin_localservice_sid = nullptr; - PSID pbuiltin_admins_sid = nullptr; - PSID pbuiltin_netops_sid = nullptr; + PSID pbuiltin_current_sid = NULL; + PSID pbuiltin_world_sid = NULL; + PSID pbuiltin_localservice_sid = NULL; + PSID pbuiltin_admins_sid = NULL; + PSID pbuiltin_netops_sid = NULL; - PSID pservice_mpssvc_sid = nullptr; - PSID pservice_nlasvc_sid = nullptr; - PSID pservice_policyagent_sid = nullptr; - PSID pservice_rpcss_sid = nullptr; - PSID pservice_wdiservicehost_sid = nullptr; + PSID pservice_mpssvc_sid = NULL; + PSID pservice_nlasvc_sid = NULL; + PSID pservice_policyagent_sid = NULL; + PSID pservice_rpcss_sid = NULL; + PSID pservice_wdiservicehost_sid = NULL; - HIMAGELIST himg_toolbar = nullptr; - HIMAGELIST himg_rules_small = nullptr; - HIMAGELIST himg_rules_large = nullptr; + HIMAGELIST himg_toolbar = NULL; + HIMAGELIST himg_rules_small = NULL; + HIMAGELIST himg_rules_large = NULL; - HBITMAP hbmp_enable = nullptr; - HBITMAP hbmp_disable = nullptr; - HBITMAP hbmp_allow = nullptr; - HBITMAP hbmp_block = nullptr; - HBITMAP hbmp_cross = nullptr; - HBITMAP hbmp_rules = nullptr; - HBITMAP hbmp_checked = nullptr; - HBITMAP hbmp_unchecked = nullptr; + HBITMAP hbmp_enable = NULL; + HBITMAP hbmp_disable = NULL; + HBITMAP hbmp_allow = NULL; + HBITMAP hbmp_block = NULL; + HBITMAP hbmp_cross = NULL; + HBITMAP hbmp_rules = NULL; + HBITMAP hbmp_checked = NULL; + HBITMAP hbmp_unchecked = NULL; - HANDLE hengine = nullptr; - HANDLE hlogfile = nullptr; - HANDLE hnetevent = nullptr; - HANDLE done_evt = nullptr; - HANDLE htimer = nullptr; - HFONT hfont = nullptr; - HICON hicon_large = nullptr; - HICON hicon_small = nullptr; - HICON hicon_package = nullptr; - HWND hnotification = nullptr; - HWND hrebar = nullptr; - HWND hfind = nullptr; + HANDLE hlogfile = NULL; + HANDLE hnetevent = NULL; + HANDLE done_evt = NULL; + HANDLE htimer = NULL; + HFONT hfont = NULL; + HICON hicon_large = NULL; + HICON hicon_small = NULL; + HICON hicon_package = NULL; + HWND hnotification = NULL; + HWND hrebar = NULL; + HWND hfind = NULL; time_t profile_internal_timestamp = 0; - size_t ntoskrnl_hash = 0; - size_t svchost_hash = 0; - size_t my_hash = 0; + SIZE_T ntoskrnl_hash = 0; + SIZE_T svchost_hash = 0; + SIZE_T my_hash = 0; - size_t wd_length = 0; + SIZE_T wd_length = 0; INT icon_id = 0; INT icon_service_id = 0; INT icon_uwp_id = 0; - bool is_notifytimeout = false; - bool is_notifymouse = false; - bool is_neteventset = false; - bool is_filterstemporary = false; -}; + BOOLEAN is_notifytimeout = FALSE; + BOOLEAN is_notifymouse = FALSE; + BOOLEAN is_neteventset = FALSE; + BOOLEAN is_filterstemporary = FALSE; +} STATIC_DATA, *PSTATIC_DATA; + +typedef struct tagITEM_LOG +{ + LPWSTR path; + LPWSTR provider_name; + LPWSTR filter_name; + LPWSTR username; + + HICON hicon; + + time_t timestamp; + + SIZE_T app_hash; + + ADDRESS_FAMILY af; + + UINT64 filter_id; + + FWP_DIRECTION direction; + + union + { + IN_ADDR remote_addr; + IN6_ADDR remote_addr6; + }; + + union + { + IN_ADDR local_addr; + IN6_ADDR local_addr6; + }; + + UINT16 remote_port; + UINT16 local_port; + + UINT8 protocol; + + BOOLEAN is_allow; + BOOLEAN is_loopback; + BOOLEAN is_blocklist; + BOOLEAN is_custom; + BOOLEAN is_system; + BOOLEAN is_myprovider; +} ITEM_LOG, *PITEM_LOG; typedef struct tagITEM_APP { - ~tagITEM_APP () - { - SAFE_DELETE_ARRAY (display_name); - SAFE_DELETE_ARRAY (real_path); - SAFE_DELETE_ARRAY (original_path); - - _r_obj_dereference (pnotification); - } - GUIDS_VEC guids; - LPWSTR display_name = nullptr; - LPWSTR original_path = nullptr; - LPWSTR real_path = nullptr; + LPWSTR display_name = NULL; + LPWSTR original_path = NULL; + LPWSTR real_path = NULL; - PR_OBJECT pnotification = nullptr; + PITEM_LOG pnotification = NULL; - HANDLE htimer = nullptr; + HANDLE htimer = NULL; time_t timestamp = 0; time_t timer = 0; @@ -321,72 +333,40 @@ typedef struct tagITEM_APP INT icon_id = 0; - EnumDataType type = DataUnknown; + ENUM_TYPE_DATA type = DataUnknown; UINT8 profile = 0; // ffu! - bool is_enabled = false; - bool is_haveerrors = false; - bool is_system = false; - bool is_silent = false; - bool is_signed = false; - bool is_undeletable = false; + BOOLEAN is_enabled = FALSE; + BOOLEAN is_haveerrors = FALSE; + BOOLEAN is_system = FALSE; + BOOLEAN is_silent = FALSE; + BOOLEAN is_signed = FALSE; + BOOLEAN is_undeletable = FALSE; } ITEM_APP, *PITEM_APP; typedef struct tagITEM_APP_HELPER { - tagITEM_APP_HELPER () - { - display_name = nullptr; - real_path = nullptr; - internal_name = nullptr; + time_t timestamp; - pdata = nullptr; - } + ENUM_TYPE_DATA type; - ~tagITEM_APP_HELPER () - { - SAFE_DELETE_ARRAY (display_name); - SAFE_DELETE_ARRAY (real_path); - SAFE_DELETE_ARRAY (internal_name); + LPWSTR display_name; + LPWSTR real_path; + LPWSTR internal_name; - _r_mem_free (pdata); - } - - time_t timestamp = 0; - - EnumDataType type = DataUnknown; - - LPWSTR display_name = nullptr; - LPWSTR real_path = nullptr; - LPWSTR internal_name = nullptr; - - PVOID pdata = nullptr; // service - PSECURITY_DESCRIPTOR / uwp - PSID (win8+) + PVOID pdata; // service - PSECURITY_DESCRIPTOR / uwp - PSID (win8+) } ITEM_APP_HELPER, *PITEM_APP_HELPER; typedef struct tagITEM_RULE { - tagITEM_RULE () - { - pname = nullptr; - prule_remote = nullptr; - prule_local = nullptr; - } - - ~tagITEM_RULE () - { - SAFE_DELETE_ARRAY (pname); - SAFE_DELETE_ARRAY (prule_remote); - SAFE_DELETE_ARRAY (prule_local); - } - HASHER_MAP apps; GUIDS_VEC guids; - LPWSTR pname = nullptr; - LPWSTR prule_remote = nullptr; - LPWSTR prule_local = nullptr; + LPWSTR pname = NULL; + LPWSTR prule_remote = NULL; + LPWSTR prule_local = NULL; ADDRESS_FAMILY af = AF_UNSPEC; @@ -397,187 +377,101 @@ typedef struct tagITEM_RULE UINT8 weight = 0; UINT8 protocol = 0; - EnumDataType type = DataUnknown; + ENUM_TYPE_DATA type = DataUnknown; - bool is_haveerrors = false; - bool is_forservices = false; - bool is_readonly = false; - bool is_enabled = false; - bool is_enabled_default = false; - bool is_block = false; + BOOLEAN is_haveerrors = FALSE; + BOOLEAN is_forservices = FALSE; + BOOLEAN is_readonly = FALSE; + BOOLEAN is_enabled = FALSE; + BOOLEAN is_enabled_default = FALSE; + BOOLEAN is_block = FALSE; } ITEM_RULE, *PITEM_RULE; typedef struct tagITEM_RULE_CONFIG { - tagITEM_RULE_CONFIG () - { - pname = nullptr; - papps = nullptr; - } + LPWSTR pname; + LPWSTR papps; - ~tagITEM_RULE_CONFIG () - { - SAFE_DELETE_ARRAY (pname); - SAFE_DELETE_ARRAY (papps); - } - - LPWSTR pname = nullptr; - LPWSTR papps = nullptr; - - bool is_enabled = false; + BOOLEAN is_enabled; } ITEM_RULE_CONFIG, *PITEM_RULE_CONFIG; -typedef struct tagITEM_LOG -{ - ~tagITEM_LOG () - { - SAFE_DELETE_ARRAY (path); - SAFE_DELETE_ARRAY (provider_name); - SAFE_DELETE_ARRAY (filter_name); - SAFE_DELETE_ARRAY (username); - - SAFE_DELETE_ICON (hicon); - } - - LPWSTR path = nullptr; - LPWSTR provider_name = nullptr; - LPWSTR filter_name = nullptr; - LPWSTR username = nullptr; - - HICON hicon = nullptr; - - time_t timestamp = 0; - - size_t app_hash = 0; - - ADDRESS_FAMILY af = 0; - - UINT64 filter_id = 0; - - FWP_DIRECTION direction = FWP_DIRECTION_OUTBOUND; - - union - { - IN_ADDR remote_addr = {0}; - IN6_ADDR remote_addr6; - }; - - union - { - IN_ADDR local_addr = {0}; - IN6_ADDR local_addr6; - }; - - volatile LONG count = 1; - - UINT16 remote_port = 0; - UINT16 local_port = 0; - - UINT8 protocol = 0; - - bool is_allow = false; - bool is_loopback = false; - bool is_blocklist = false; - bool is_custom = false; - bool is_system = false; - bool is_myprovider = false; -} ITEM_LOG, *PITEM_LOG; - typedef struct tagITEM_NETWORK { - ~tagITEM_NETWORK () - { - SAFE_DELETE_ARRAY (path); - } - - LPWSTR path = nullptr; - - size_t app_hash = 0; - - ADDRESS_FAMILY af = 0; - - FWP_DIRECTION direction = FWP_DIRECTION_OUTBOUND; + LPWSTR path; + SIZE_T app_hash; + ADDRESS_FAMILY af; + FWP_DIRECTION direction; union { - IN_ADDR remote_addr = {0}; + IN_ADDR remote_addr; IN6_ADDR remote_addr6; }; union { - IN_ADDR local_addr = {0}; + IN_ADDR local_addr; IN6_ADDR local_addr6; }; - DWORD state = 0; + DWORD state; - INT icon_id = 0; + INT icon_id; - UINT16 remote_port = 0; - UINT16 local_port = 0; + UINT16 remote_port; + UINT16 local_port; - UINT8 protocol = 0; + UINT8 protocol; - bool is_connection = false; + BOOLEAN is_connection; } ITEM_NETWORK, *PITEM_NETWORK; typedef struct tagITEM_STATUS { - size_t apps_count; - size_t apps_timer_count; - size_t apps_unused_count; - - size_t rules_count; - size_t rules_global_count; - size_t rules_predefined_count; - size_t rules_user_count; + SIZE_T apps_count; + SIZE_T apps_timer_count; + SIZE_T apps_unused_count; + SIZE_T rules_count; + SIZE_T rules_global_count; + SIZE_T rules_predefined_count; + SIZE_T rules_user_count; } ITEM_STATUS, *PITEM_STATUS; -typedef struct tagINSTALL_CONTEXT -{ - HWND hwnd; - bool is_install; -} INSTALL_CONTEXT, *PINSTALL_CONTEXT; - -typedef struct tagEDITOR_CONTEXT +typedef struct tagITEM_CONTEXT { HWND hwnd; INT listview_id; INT item_id; -} EDITOR_CONTEXT, *PEDITOR_CONTEXT; + BOOLEAN is_install; +} ITEM_CONTEXT, *PITEM_CONTEXT; typedef struct tagITEM_COLOR { LPWSTR pcfg_name; LPWSTR pcfg_value; - - size_t clr_hash; - + SIZE_T clr_hash; UINT locale_id; - COLORREF default_clr; COLORREF new_clr; - - bool is_enabled; + BOOLEAN is_enabled; } ITEM_COLOR, *PITEM_COLOR; typedef struct tagITEM_ADDRESS { - WCHAR host[NI_MAXHOST] = {0}; + WCHAR host[NI_MAXHOST]; - FWP_V4_ADDR_AND_MASK* paddr4 = nullptr; - FWP_V6_ADDR_AND_MASK* paddr6 = nullptr; + FWP_V4_ADDR_AND_MASK* paddr4; + FWP_V6_ADDR_AND_MASK* paddr6; - FWP_RANGE* prange = nullptr; + FWP_RANGE* prange; - EnumDataType type = DataUnknown; + ENUM_TYPE_DATA type; - NET_ADDRESS_FORMAT format = NET_ADDRESS_FORMAT_UNSPECIFIED; + NET_ADDRESS_FORMAT format; - UINT16 port = 0; + UINT16 port; - bool is_range = false; + BOOLEAN is_range; } ITEM_ADDRESS, *PITEM_ADDRESS; typedef struct tagITEM_LIST_HEAD @@ -588,7 +482,7 @@ typedef struct tagITEM_LIST_HEAD volatile LONG thread_count; } ITEM_LIST_HEAD, *PITEM_LIST_HEAD; -typedef struct tagITEM_LIST_ENTRY +typedef struct _ITEM_LOG_LISTENTRY { SLIST_ENTRY ListEntry; @@ -596,9 +490,17 @@ typedef struct tagITEM_LIST_ENTRY ULONG_PTR Reserved = 0; #endif // _WIN64 - PR_OBJECT Body = nullptr; -} ITEM_LIST_ENTRY, *PITEM_LIST_ENTRY; + PITEM_LOG Body = NULL; -C_ASSERT (FIELD_OFFSET (ITEM_LIST_ENTRY, ListEntry) == 0); -C_ASSERT (FIELD_OFFSET (ITEM_LIST_ENTRY, Body) == MEMORY_ALLOCATION_ALIGNMENT); + //SLIST_ENTRY ListEntry; + //QUAD_PTR Body; +} ITEM_LOG_LISTENTRY, *PITEM_LOG_LISTENTRY; + +C_ASSERT (FIELD_OFFSET (ITEM_LOG_LISTENTRY, ListEntry) == 0x00); +C_ASSERT (FIELD_OFFSET (ITEM_LOG_LISTENTRY, Body) == MEMORY_ALLOCATION_ALIGNMENT); + +typedef std::unordered_map OBJECTS_APP_HELPER; +typedef std::unordered_map OBJECTS_RULE_CONFIG; +typedef std::unordered_map OBJECTS_NETWORK; +typedef std::vector OBJECTS_LOG; diff --git a/src/notifications.cpp b/src/notifications.cpp index 58ba8b30..20fb3457 100644 --- a/src/notifications.cpp +++ b/src/notifications.cpp @@ -3,37 +3,37 @@ #include "global.hpp" -HFONT hfont_title = nullptr; -HFONT hfont_link = nullptr; -HFONT hfont_text = nullptr; +HFONT hfont_title = NULL; +HFONT hfont_link = NULL; +HFONT hfont_text = NULL; -void _app_notifycreatewindow () +VOID _app_notifycreatewindow () { - config.hnotification = CreateDialog (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_NOTIFICATION), nullptr, &NotificationProc); + config.hnotification = CreateDialog (app.GetHINSTANCE (), MAKEINTRESOURCE (IDD_NOTIFICATION), NULL, &NotificationProc); } -bool _app_notifycommand (HWND hwnd, INT button_id, time_t seconds) +BOOLEAN _app_notifycommand (HWND hwnd, INT button_id, time_t seconds) { - const size_t app_hash = _app_notifyget_id (hwnd, false); + SIZE_T app_hash = _app_notifyget_id (hwnd, FALSE); PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) - return false; + return FALSE; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (!ptr_app) { - _r_obj_dereference (ptr_app_object); - return false; + _r_obj2_dereference (ptr_app_object); + return FALSE; } _app_freenotify (app_hash, ptr_app); OBJECTS_VEC rules; - const INT listview_id = _app_getlistview_id (ptr_app->type); - const INT item_pos = _app_getposition (app.GetHWND (), listview_id, app_hash); + INT listview_id = _app_getlistview_id (ptr_app->type); + INT item_pos = _app_getposition (app.GetHWND (), listview_id, app_hash); if (button_id == IDC_ALLOW_BTN || button_id == IDC_BLOCK_BTN) { @@ -62,82 +62,84 @@ bool _app_notifycommand (HWND hwnd, INT button_id, time_t seconds) } else if (button_id == IDM_DISABLENOTIFICATIONS) { - ptr_app->is_silent = true; + ptr_app->is_silent = TRUE; } ptr_app->last_notify = _r_unixtime_now (); - _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create3filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); _app_refreshstatus (app.GetHWND (), listview_id); - _app_profile_save (); + _app_profile_save (NULL); - if (listview_id && _r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT) == listview_id) + if (listview_id && (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT) == listview_id) { - _app_listviewsort (app.GetHWND (), listview_id); - _r_listview_redraw (app.GetHWND (), listview_id); + _app_listviewsort (app.GetHWND (), listview_id, INVALID_INT, FALSE); + _r_listview_redraw (app.GetHWND (), listview_id, INVALID_INT); } - return true; + return TRUE; } -bool _app_notifyadd (HWND hwnd, PR_OBJECT ptr_log_object, PITEM_APP ptr_app) +BOOLEAN _app_notifyadd (HWND hwnd, PITEM_LOG ptr_log, PITEM_APP ptr_app) { // check for last display time - const time_t current_time = _r_unixtime_now (); - const time_t notification_timeout = app.ConfigGet (L"NotificationsTimeout", NOTIFY_TIMEOUT_DEFAULT).AsLonglong (); + time_t current_time = _r_unixtime_now (); + time_t notification_timeout = app.ConfigGetLong64 (L"NotificationsTimeout", NOTIFY_TIMEOUT_DEFAULT); if (notification_timeout && ((current_time - ptr_app->last_notify) <= notification_timeout)) - return false; - - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + return FALSE; ptr_app->last_notify = current_time; if (!ptr_log->hicon) - _app_getappicon (ptr_app, false, nullptr, &ptr_log->hicon); + _app_getappicon (ptr_app, FALSE, NULL, &ptr_log->hicon); // remove existing log item (if exists) if (ptr_app->pnotification) { _r_obj_dereference (ptr_app->pnotification); - ptr_app->pnotification = nullptr; + ptr_app->pnotification = NULL; } - ptr_app->pnotification = _r_obj_reference (ptr_log_object); + ptr_app->pnotification = (PITEM_LOG)_r_obj_reference (ptr_log); - if (app.ConfigGet (L"IsNotificationsSound", true).AsBool ()) + if (app.ConfigGetBoolean (L"IsNotificationsSound", TRUE)) _app_notifyplaysound (); if (!_r_wnd_isundercursor (hwnd)) - _app_notifyshow (hwnd, ptr_log, true, true); + _app_notifyshow (hwnd, ptr_log, TRUE, TRUE); - return true; + return TRUE; } -void _app_freenotify (size_t app_hash, PITEM_APP ptr_app) +VOID _app_freenotify (SIZE_T app_hash, PITEM_APP ptr_app) { - const HWND hwnd = config.hnotification; + HWND hwnd = config.hnotification; if (ptr_app) { if (ptr_app->pnotification) { _r_obj_dereference (ptr_app->pnotification); - ptr_app->pnotification = nullptr; + ptr_app->pnotification = NULL; } } - if (_app_notifyget_id (hwnd, false) == app_hash) - _app_notifyget_id (hwnd, true); + if (_app_notifyget_id (hwnd, FALSE) == app_hash) + _app_notifyget_id (hwnd, TRUE); - _app_notifyrefresh (hwnd, true); + _app_notifyrefresh (hwnd, TRUE); } -size_t _app_notifyget_id (HWND hwnd, bool is_nearest) +SIZE_T _app_notifyget_id (HWND hwnd, BOOLEAN is_nearest) { - const size_t app_hash_current = (size_t)GetWindowLongPtr (hwnd, GWLP_USERDATA); + SIZE_T app_hash_current = (SIZE_T)GetWindowLongPtr (hwnd, GWLP_USERDATA); if (is_nearest) { @@ -146,7 +148,7 @@ size_t _app_notifyget_id (HWND hwnd, bool is_nearest) if (p.first == app_hash_current) // exclude current app from enumeration continue; - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -155,13 +157,13 @@ size_t _app_notifyget_id (HWND hwnd, bool is_nearest) if (ptr_app && ptr_app->pnotification) { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); SetWindowLongPtr (hwnd, GWLP_USERDATA, (LONG_PTR)p.first); return p.first; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } SetWindowLongPtr (hwnd, GWLP_USERDATA, 0); @@ -171,7 +173,7 @@ size_t _app_notifyget_id (HWND hwnd, bool is_nearest) return app_hash_current; } -PR_OBJECT _app_notifyget_obj (size_t app_hash) +PITEM_LOG _app_notifyget_obj (SIZE_T app_hash) { PR_OBJECT ptr_app_object = _app_getappitem (app_hash); @@ -181,41 +183,41 @@ PR_OBJECT _app_notifyget_obj (size_t app_hash) if (ptr_app) { - PR_OBJECT ptr_log_object = _r_obj_reference (ptr_app->pnotification); + PITEM_LOG ptr_log = (PITEM_LOG)_r_obj_reference (ptr_app->pnotification); - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); - return ptr_log_object; + return ptr_log; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - return nullptr; + return NULL; } -bool _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, bool is_forced, bool is_safety) +BOOLEAN _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, BOOLEAN is_forced, BOOLEAN is_safety) { - if (!app.ConfigGet (L"IsNotificationsEnabled", true).AsBool ()) - return false; + if (!app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE)) + return FALSE; PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); if (!ptr_app_object) - return false; + return FALSE; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (!ptr_app) { - _r_obj_dereference (ptr_app_object); - return false; + _r_obj2_dereference (ptr_app_object); + return FALSE; } rstring is_signed; - const rstring empty_text = app.LocaleString (IDS_STATUS_EMPTY, nullptr); + rstring empty_text = app.LocaleString (IDS_STATUS_EMPTY, NULL); - if (app.ConfigGet (L"IsCertificatesEnabled", false).AsBool ()) + if (app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE)) { if (ptr_app->is_signed) { @@ -227,47 +229,47 @@ bool _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, bool is_forced, bool is_safe is_signed = (LPCWSTR)ptr_signature_object->pdata; else - is_signed = app.LocaleString (IDS_SIGN_SIGNED, nullptr); + is_signed = app.LocaleString (IDS_SIGN_SIGNED, NULL); - _r_obj_dereference (ptr_signature_object); + _r_obj2_dereference (ptr_signature_object); } else { - is_signed = app.LocaleString (IDS_SIGN_SIGNED, nullptr); + is_signed = app.LocaleString (IDS_SIGN_SIGNED, NULL); } } else { - is_signed = app.LocaleString (IDS_SIGN_UNSIGNED, nullptr); + is_signed = app.LocaleString (IDS_SIGN_UNSIGNED, NULL); } } - SetWindowText (hwnd, _r_fmt (L"%s - " APP_NAME, app.LocaleString (IDS_NOTIFY_TITLE, nullptr).GetString ())); + SetWindowText (hwnd, _r_fmt (L"%s - " APP_NAME, app.LocaleString (IDS_NOTIFY_TITLE, NULL).GetString ())); SetWindowLongPtr (hwnd, GWLP_USERDATA, (LONG_PTR)ptr_log->app_hash); SetWindowLongPtr (GetDlgItem (hwnd, IDC_HEADER_ID), GWLP_USERDATA, (LONG_PTR)ptr_log->hicon); // print table text { - const bool is_inbound = (ptr_log->direction == FWP_DIRECTION_INBOUND); + BOOLEAN is_inbound = (ptr_log->direction == FWP_DIRECTION_INBOUND); - LPWSTR remote_fmt = nullptr; + LPWSTR remote_fmt = NULL; _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, 0, &remote_fmt, FMTADDR_RESOLVE_HOST); _r_ctrl_settabletext (hwnd, IDC_FILE_ID, app.LocaleString (IDS_NAME, L":"), IDC_FILE_TEXT, !_r_str_isempty (ptr_app->display_name) ? _r_path_getfilename (ptr_app->display_name) : empty_text); _r_ctrl_settabletext (hwnd, IDC_SIGNATURE_ID, app.LocaleString (IDS_SIGNATURE, L":"), IDC_SIGNATURE_TEXT, is_signed.IsEmpty () ? empty_text : is_signed); _r_ctrl_settabletext (hwnd, IDC_ADDRESS_ID, app.LocaleString (IDS_ADDRESS, L":"), IDC_ADDRESS_TEXT, !_r_str_isempty (remote_fmt) ? remote_fmt : empty_text); - _r_ctrl_settabletext (hwnd, IDC_PORT_ID, app.LocaleString (IDS_PORT, L":"), IDC_PORT_TEXT, ptr_log->remote_port ? _app_formatport (ptr_log->remote_port, false).GetString () : empty_text); - _r_ctrl_settabletext (hwnd, IDC_DIRECTION_ID, app.LocaleString (IDS_DIRECTION, L":"), IDC_DIRECTION_TEXT, app.LocaleString (is_inbound ? IDS_DIRECTION_2 : IDS_DIRECTION_1, ptr_log->is_loopback ? L" (Loopback)" : nullptr)); + _r_ctrl_settabletext (hwnd, IDC_PORT_ID, app.LocaleString (IDS_PORT, L":"), IDC_PORT_TEXT, ptr_log->remote_port ? _app_formatport (ptr_log->remote_port, FALSE).GetString () : empty_text); + _r_ctrl_settabletext (hwnd, IDC_DIRECTION_ID, app.LocaleString (IDS_DIRECTION, L":"), IDC_DIRECTION_TEXT, app.LocaleString (is_inbound ? IDS_DIRECTION_2 : IDS_DIRECTION_1, ptr_log->is_loopback ? L" (Loopback)" : NULL)); _r_ctrl_settabletext (hwnd, IDC_FILTER_ID, app.LocaleString (IDS_FILTER, L":"), IDC_FILTER_TEXT, !_r_str_isempty (ptr_log->filter_name) ? ptr_log->filter_name : empty_text); - _r_ctrl_settabletext (hwnd, IDC_DATE_ID, app.LocaleString (IDS_DATE, L":"), IDC_DATE_TEXT, _r_fmt_date (ptr_log->timestamp, FDTF_SHORTDATE | FDTF_LONGTIME)); + _r_ctrl_settabletext (hwnd, IDC_DATE_ID, app.LocaleString (IDS_DATE, L":"), IDC_DATE_TEXT, _r_fmt_dateex (ptr_log->timestamp, FDTF_SHORTDATE | FDTF_LONGTIME)); - SAFE_DELETE_ARRAY (remote_fmt); + SAFE_DELETE_MEMORY (remote_fmt); } - _r_ctrl_settext (hwnd, IDC_RULES_BTN, app.LocaleString (IDS_TRAY_RULES, nullptr)); - _r_ctrl_settext (hwnd, IDC_ALLOW_BTN, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); - _r_ctrl_settext (hwnd, IDC_BLOCK_BTN, app.LocaleString (IDS_ACTION_BLOCK, nullptr)); + _r_ctrl_settext (hwnd, IDC_RULES_BTN, app.LocaleString (IDS_TRAY_RULES, NULL)); + _r_ctrl_settext (hwnd, IDC_ALLOW_BTN, app.LocaleString (IDS_ACTION_ALLOW, NULL)); + _r_ctrl_settext (hwnd, IDC_BLOCK_BTN, app.LocaleString (IDS_ACTION_BLOCK, NULL)); _r_ctrl_enable (hwnd, IDC_RULES_BTN, !is_safety); _r_ctrl_enable (hwnd, IDC_ALLOW_BTN, !is_safety); @@ -275,50 +277,51 @@ bool _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, bool is_forced, bool is_safe _r_ctrl_enable (hwnd, IDC_LATER_BTN, !is_safety); if (is_safety) - SetTimer (hwnd, NOTIFY_TIMER_SAFETY_ID, NOTIFY_TIMER_SAFETY_TIMEOUT, nullptr); + SetTimer (hwnd, NOTIFY_TIMER_SAFETY_ID, NOTIFY_TIMER_SAFETY_TIMEOUT, NULL); else KillTimer (hwnd, NOTIFY_TIMER_SAFETY_ID); - _app_notifysetpos (hwnd, false); + _app_notifysetpos (hwnd, FALSE); // prevent fullscreen apps lose focus - const bool is_fullscreenmode = _r_wnd_isfullscreenmode (); + BOOLEAN is_fullscreenmode = _r_wnd_isfullscreenmode (); if (is_forced && is_fullscreenmode) - is_forced = false; + is_forced = FALSE; - InvalidateRect (GetDlgItem (hwnd, IDC_HEADER_ID), nullptr, TRUE); - InvalidateRect (hwnd, nullptr, TRUE); + InvalidateRect (GetDlgItem (hwnd, IDC_HEADER_ID), NULL, TRUE); + InvalidateRect (hwnd, NULL, TRUE); _r_wnd_top (hwnd, !is_fullscreenmode); ShowWindow (hwnd, is_forced ? SW_SHOW : SW_SHOWNA); - return true; + return TRUE; } -void _app_notifyhide (HWND hwnd) +VOID _app_notifyhide (HWND hwnd) { ShowWindow (hwnd, SW_HIDE); } // Play notification sound even if system have "nosound" mode -void _app_notifyplaysound () +VOID _app_notifyplaysound () { - bool result = false; + BOOLEAN result = FALSE; static WCHAR notify_snd_path[MAX_PATH] = {0}; if (_r_str_isempty (notify_snd_path) || !_r_fs_exists (notify_snd_path)) { - HKEY hkey = nullptr; notify_snd_path[0] = UNICODE_NULL; #define NOTIFY_SOUND_NAME L"MailBeep" + HKEY hkey; + if (RegOpenKeyEx (HKEY_CURRENT_USER, L"AppEvents\\Schemes\\Apps\\.Default\\" NOTIFY_SOUND_NAME L"\\.Default", 0, KEY_READ, &hkey) == ERROR_SUCCESS) { - rstring path = _r_reg_querystring (hkey, nullptr); + rstring path = _r_reg_querystring (hkey, NULL); if (!path.IsEmpty ()) { @@ -326,8 +329,8 @@ void _app_notifyplaysound () if (_r_fs_exists (path)) { - _r_str_copy (notify_snd_path, _countof (notify_snd_path), path); - result = true; + _r_str_copy (notify_snd_path, RTL_NUMBER_OF (notify_snd_path), path); + result = TRUE; } } @@ -336,38 +339,35 @@ void _app_notifyplaysound () } else { - result = true; + result = TRUE; } - if (!result || !_r_fs_exists (notify_snd_path) || !PlaySound (notify_snd_path, nullptr, SND_ASYNC | SND_NODEFAULT | SND_NOWAIT | SND_FILENAME | SND_SENTRY)) - PlaySound (NOTIFY_SOUND_NAME, nullptr, SND_ASYNC | SND_NODEFAULT | SND_NOWAIT | SND_SENTRY); + if (!result || !_r_fs_exists (notify_snd_path) || !PlaySound (notify_snd_path, NULL, SND_ASYNC | SND_NODEFAULT | SND_NOWAIT | SND_FILENAME | SND_SENTRY)) + PlaySound (NOTIFY_SOUND_NAME, NULL, SND_ASYNC | SND_NODEFAULT | SND_NOWAIT | SND_SENTRY); } -void _app_notifyrefresh (HWND hwnd, bool is_safety) +VOID _app_notifyrefresh (HWND hwnd, BOOLEAN is_safety) { - if (!app.ConfigGet (L"IsNotificationsEnabled", true).AsBool () || !IsWindowVisible (hwnd)) + if (!app.ConfigGetBoolean (L"IsNotificationsEnabled", TRUE) || !IsWindowVisible (hwnd)) { _app_notifyhide (hwnd); return; } - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (hwnd, false)); + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (hwnd, FALSE)); - if (!ptr_log_object) + if (!ptr_log) { _app_notifyhide (hwnd); return; } - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + _app_notifyshow (hwnd, ptr_log, TRUE, is_safety); - if (ptr_log) - _app_notifyshow (hwnd, ptr_log, true, is_safety); - - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } -void _app_notifysetpos (HWND hwnd, bool is_forced) +VOID _app_notifysetpos (HWND hwnd, BOOLEAN is_forced) { if (!is_forced && IsWindowVisible (hwnd)) { @@ -375,12 +375,12 @@ void _app_notifysetpos (HWND hwnd, bool is_forced) GetWindowRect (hwnd, &windowRect); _r_wnd_adjustwindowrect (hwnd, &windowRect); - SetWindowPos (hwnd, nullptr, windowRect.left, windowRect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); + SetWindowPos (hwnd, NULL, windowRect.left, windowRect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); return; } - const bool is_intray = app.ConfigGet (L"IsNotificationsOnTray", false).AsBool (); + BOOLEAN is_intray = app.ConfigGetBoolean (L"IsNotificationsOnTray", FALSE); if (is_intray) { @@ -396,38 +396,38 @@ void _app_notifysetpos (HWND hwnd, bool is_forced) if (SHAppBarMessage (ABM_GETTASKBARPOS, &abd)) { - const INT border_x = _r_dc_getsystemmetrics (hwnd, SM_CXBORDER); + INT border_x = _r_dc_getsystemmetrics (hwnd, SM_CXBORDER); if (abd.uEdge == ABE_LEFT) { windowRect.left = abd.rc.right + border_x; - windowRect.top = (desktopRect.bottom - _R_RECT_HEIGHT (&windowRect)) - border_x; + windowRect.top = (desktopRect.bottom - _r_calc_rectheight (LONG, &windowRect)) - border_x; } else if (abd.uEdge == ABE_TOP) { - windowRect.left = (desktopRect.right - _R_RECT_WIDTH (&windowRect)) - border_x; + windowRect.left = (desktopRect.right - _r_calc_rectwidth (LONG, &windowRect)) - border_x; windowRect.top = abd.rc.bottom + border_x; } else if (abd.uEdge == ABE_RIGHT) { - windowRect.left = (desktopRect.right - _R_RECT_WIDTH (&windowRect)) - border_x; - windowRect.top = (desktopRect.bottom - _R_RECT_HEIGHT (&windowRect)) - border_x; + windowRect.left = (desktopRect.right - _r_calc_rectwidth (LONG, &windowRect)) - border_x; + windowRect.top = (desktopRect.bottom - _r_calc_rectheight (LONG, &windowRect)) - border_x; } - else/* if (appbar.uEdge == ABE_BOTTOM)*/ + else/* if (abd.uEdge == ABE_BOTTOM)*/ { windowRect.left = (desktopRect.right - (windowRect.right - windowRect.left)) - border_x; - windowRect.top = (desktopRect.bottom - _R_RECT_HEIGHT (&windowRect)) - border_x; + windowRect.top = (desktopRect.bottom - _r_calc_rectheight (LONG, &windowRect)) - border_x; } - SetWindowPos (hwnd, nullptr, windowRect.left, windowRect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); + SetWindowPos (hwnd, NULL, windowRect.left, windowRect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOOWNERZORDER); return; } } - _r_wnd_center (hwnd, nullptr); // display window on center (depends on error, config etc...) + _r_wnd_center (hwnd, NULL); // display window on center (depends on error, config etc...) } -HFONT _app_notifyfontinit (HWND hwnd, PLOGFONT plf, LONG height, LONG weight, LPCWSTR name, BYTE is_underline) +HFONT _app_notifyfontinit (HWND hwnd, PLOGFONT plf, LONG height, LONG weight, LPCWSTR name, BOOLEAN is_underline) { if (height) plf->lfHeight = _r_dc_fontsizetoheight (hwnd, height); @@ -444,13 +444,13 @@ HFONT _app_notifyfontinit (HWND hwnd, PLOGFONT plf, LONG height, LONG weight, LP return CreateFontIndirect (plf); } -void _app_notifyfontset (HWND hwnd) +VOID _app_notifyfontset (HWND hwnd) { - SendMessage (hwnd, WM_SETICON, ICON_SMALL, (LPARAM)app.GetSharedImage (nullptr, SIH_EXCLAMATION, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON))); - SendMessage (hwnd, WM_SETICON, ICON_BIG, (LPARAM)app.GetSharedImage (nullptr, SIH_EXCLAMATION, _r_dc_getsystemmetrics (hwnd, SM_CXICON))); + SendMessage (hwnd, WM_SETICON, ICON_SMALL, (LPARAM)app.GetSharedImage (NULL, SIH_EXCLAMATION, _r_dc_getsystemmetrics (hwnd, SM_CXSMICON))); + SendMessage (hwnd, WM_SETICON, ICON_BIG, (LPARAM)app.GetSharedImage (NULL, SIH_EXCLAMATION, _r_dc_getsystemmetrics (hwnd, SM_CXICON))); - const INT title_font_height = 12; - const INT text_font_height = 9; + INT title_font_height = 12; + INT text_font_height = 9; NONCLIENTMETRICS ncm = {0}; ncm.cbSize = sizeof (ncm); @@ -491,10 +491,10 @@ void _app_notifyfontset (HWND hwnd) _r_wnd_addstyle (hwnd, IDC_BLOCK_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); _r_wnd_addstyle (hwnd, IDC_LATER_BTN, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); - InvalidateRect (hwnd, nullptr, TRUE); + InvalidateRect (hwnd, NULL, TRUE); } -void DrawGradient (HDC hdc, LPRECT const lprc, COLORREF rgb1, COLORREF rgb2, ULONG mode) +VOID DrawGradient (HDC hdc, const LPRECT lprc, COLORREF rgb1, COLORREF rgb2, ULONG mode) { GRADIENT_RECT gradientRect = {0}; TRIVERTEX triVertext[2] = {0}; @@ -513,7 +513,7 @@ void DrawGradient (HDC hdc, LPRECT const lprc, COLORREF rgb1, COLORREF rgb2, ULO triVertext[1].Green = GetGValue (rgb2) << 8; triVertext[1].Blue = GetBValue (rgb2) << 8; - GradientFill (hdc, triVertext, _countof (triVertext), &gradientRect, 1, mode); + GradientFill (hdc, triVertext, RTL_NUMBER_OF (triVertext), &gradientRect, 1, mode); } INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) @@ -528,7 +528,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp _app_notifyfontset (hwnd); - const HWND htip = _r_ctrl_createtip (hwnd); + HWND htip = _r_ctrl_createtip (hwnd); if (htip) { @@ -551,7 +551,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case WM_DPICHANGED: { _app_notifyfontset (hwnd); - _app_notifyrefresh (hwnd, false); + _app_notifyrefresh (hwnd, FALSE); break; } @@ -571,7 +571,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case WA_ACTIVE: case WA_CLICKACTIVE: { - _r_wnd_top (hwnd, true); + _r_wnd_top (hwnd, TRUE); SetActiveWindow (hwnd); break; } @@ -586,10 +586,10 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp { KillTimer (hwnd, wparam); - _r_ctrl_enable (hwnd, IDC_RULES_BTN, true); - _r_ctrl_enable (hwnd, IDC_ALLOW_BTN, true); - _r_ctrl_enable (hwnd, IDC_BLOCK_BTN, true); - _r_ctrl_enable (hwnd, IDC_LATER_BTN, true); + _r_ctrl_enable (hwnd, IDC_RULES_BTN, TRUE); + _r_ctrl_enable (hwnd, IDC_ALLOW_BTN, TRUE); + _r_ctrl_enable (hwnd, IDC_BLOCK_BTN, TRUE); + _r_ctrl_enable (hwnd, IDC_LATER_BTN, TRUE); } break; @@ -622,8 +622,8 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp RECT rc = {0}; GetClientRect (hwnd, &rc); - const INT wnd_width = _R_RECT_WIDTH (&rc); - const INT wnd_height = _R_RECT_HEIGHT (&rc); + INT wnd_width = _r_calc_rectwidth (INT, &rc); + INT wnd_height = _r_calc_rectheight (INT, &rc); SetRect (&rc, 0, wnd_height - _r_dc_getdpi (hwnd, _R_SIZE_FOOTERHEIGHT), wnd_width, wnd_height); _r_dc_fillrect (hdc, &rc, GetSysColor (COLOR_3DFACE)); @@ -665,26 +665,26 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp if (drawInfo->CtlID != IDC_HEADER_ID) break; - const INT wnd_icon_size = _r_dc_getsystemmetrics (hwnd, SM_CXICON); - const INT wnd_spacing = _r_dc_getdpi (hwnd, 12); + INT wnd_icon_size = _r_dc_getsystemmetrics (hwnd, SM_CXICON); + INT wnd_spacing = _r_dc_getdpi (hwnd, 12); RECT rcText = {0}; RECT rcIcon = {0}; - SetRect (&rcText, wnd_spacing, 0, _R_RECT_WIDTH (&drawInfo->rcItem) - (wnd_spacing * 3) - wnd_icon_size, _R_RECT_HEIGHT (&drawInfo->rcItem)); - SetRect (&rcIcon, _R_RECT_WIDTH (&drawInfo->rcItem) - wnd_icon_size - wnd_spacing, (_R_RECT_HEIGHT (&drawInfo->rcItem) / 2) - (wnd_icon_size / 2), wnd_icon_size, wnd_icon_size); + SetRect (&rcText, wnd_spacing, 0, _r_calc_rectwidth (INT, &drawInfo->rcItem) - (wnd_spacing * 3) - wnd_icon_size, _r_calc_rectheight (INT, &drawInfo->rcItem)); + SetRect (&rcIcon, _r_calc_rectwidth (INT, &drawInfo->rcItem) - wnd_icon_size - wnd_spacing, (_r_calc_rectheight (INT, &drawInfo->rcItem) / 2) - (wnd_icon_size / 2), wnd_icon_size, wnd_icon_size); SetBkMode (drawInfo->hDC, TRANSPARENT); // draw background - DrawGradient (drawInfo->hDC, &drawInfo->rcItem, app.ConfigGet (L"NotificationBackground1", NOTIFY_GRADIENT_1).AsUlong (), app.ConfigGet (L"NotificationBackground2", NOTIFY_GRADIENT_2).AsUlong (), GRADIENT_FILL_RECT_H); + DrawGradient (drawInfo->hDC, &drawInfo->rcItem, app.ConfigGetUlong (L"NotificationBackground1", NOTIFY_GRADIENT_1), app.ConfigGetUlong (L"NotificationBackground2", NOTIFY_GRADIENT_2), GRADIENT_FILL_RECT_H); // draw title text WCHAR text[128] = {0}; - _r_str_printf (text, _countof (text), app.LocaleString (IDS_NOTIFY_HEADER, nullptr), APP_NAME); + _r_str_printf (text, RTL_NUMBER_OF (text), app.LocaleString (IDS_NOTIFY_HEADER, NULL), APP_NAME); COLORREF clr_prev = SetTextColor (drawInfo->hDC, GetSysColor (COLOR_WINDOW)); - DrawTextEx (drawInfo->hDC, text, (INT)_r_str_length (text), &rcText, DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS | DT_NOCLIP | DT_NOPREFIX, nullptr); + DrawTextEx (drawInfo->hDC, text, (INT)_r_str_length (text), &rcText, DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS | DT_NOCLIP | DT_NOPREFIX, NULL); SetTextColor (drawInfo->hDC, clr_prev); // draw icon @@ -694,7 +694,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp hicon = config.hicon_large; if (hicon) - DrawIconEx (drawInfo->hDC, rcIcon.left, rcIcon.top, hicon, rcIcon.right, rcIcon.bottom, 0, nullptr, DI_IMAGE | DI_MASK); + DrawIconEx (drawInfo->hDC, rcIcon.left, rcIcon.top, hicon, rcIcon.right, rcIcon.bottom, 0, NULL, DI_IMAGE | DI_MASK); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -702,11 +702,11 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case WM_SETCURSOR: { - const INT ctrl_id = GetDlgCtrlID ((HWND)wparam); + INT ctrl_id = GetDlgCtrlID ((HWND)wparam); if (ctrl_id == IDC_FILE_TEXT) { - SetCursor (LoadCursor (nullptr, IDC_HAND)); + SetCursor (LoadCursor (NULL, IDC_HAND)); SetWindowLongPtr (hwnd, DWLP_MSGRESULT, TRUE); return TRUE; @@ -731,7 +731,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp SetWindowLongPtr (hwnd, GWL_EXSTYLE, exstyle | WS_EX_LAYERED); SetLayeredWindowAttributes (hwnd, 0, (msg == WM_ENTERSIZEMOVE) ? 100 : 255, LWA_ALPHA); - SetCursor (LoadCursor (nullptr, (msg == WM_ENTERSIZEMOVE) ? IDC_SIZEALL : IDC_ARROW)); + SetCursor (LoadCursor (NULL, (msg == WM_ENTERSIZEMOVE) ? IDC_SIZEALL : IDC_ARROW)); break; } @@ -744,26 +744,26 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp { case BCN_DROPDOWN: { - const INT ctrl_id = static_cast(nmlp->idFrom); + INT ctrl_id = PtrToInt ((LPVOID)nmlp->idFrom); if (!_r_ctrl_isenabled (hwnd, ctrl_id) || (ctrl_id != IDC_RULES_BTN && ctrl_id != IDC_ALLOW_BTN)) break; - const HMENU hsubmenu = CreatePopupMenu (); + HMENU hsubmenu = CreatePopupMenu (); if (!hsubmenu) break; - if (nmlp->idFrom == IDC_RULES_BTN) + if (ctrl_id == IDC_RULES_BTN) { - AppendMenu (hsubmenu, MF_STRING, IDM_DISABLENOTIFICATIONS, app.LocaleString (IDS_DISABLENOTIFICATIONS, nullptr)); + AppendMenu (hsubmenu, MF_STRING, IDM_DISABLENOTIFICATIONS, app.LocaleString (IDS_DISABLENOTIFICATIONS, NULL)); - _app_generate_rulesmenu (hsubmenu, _app_notifyget_id (hwnd, false)); + _app_generate_rulesmenu (hsubmenu, _app_notifyget_id (hwnd, FALSE)); } - else if (nmlp->idFrom == IDC_ALLOW_BTN) + else if (ctrl_id == IDC_ALLOW_BTN) { - AppendMenu (hsubmenu, MF_STRING, IDC_ALLOW_BTN, app.LocaleString (IDS_ACTION_ALLOW, nullptr)); - AppendMenu (hsubmenu, MF_SEPARATOR, 0, nullptr); + AppendMenu (hsubmenu, MF_STRING, IDC_ALLOW_BTN, app.LocaleString (IDS_ACTION_ALLOW, NULL)); + AppendMenu (hsubmenu, MF_SEPARATOR, 0, NULL); _app_generate_timermenu (hsubmenu, 0); @@ -777,7 +777,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp _r_wnd_adjustwindowrect (nmlp->hwndFrom, &buttonRect); - _r_menu_popup (hsubmenu, hwnd, (LPPOINT)&buttonRect, true); + _r_menu_popup (hsubmenu, hwnd, (LPPOINT)&buttonRect, TRUE); DestroyMenu (hsubmenu); @@ -792,41 +792,54 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp break; WCHAR buffer[1024] = {0}; - const INT ctrl_id = GetDlgCtrlID ((HWND)lpnmdi->hdr.idFrom); + INT ctrl_id = GetDlgCtrlID ((HWND)lpnmdi->hdr.idFrom); if (ctrl_id == IDC_FILE_TEXT) { - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (hwnd, false)); + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (hwnd, FALSE)); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + INT listview_id = (INT)_app_getappinfo (ptr_log->app_hash, InfoListviewId); - if (ptr_log && ptr_log->app_hash) - _r_str_copy (buffer, _countof (buffer), _app_gettooltip (nullptr, IDC_APPS_PROFILE, ptr_log->app_hash)); + if (listview_id) + { + INT item_id = _app_getposition (app.GetHWND (), listview_id, ptr_log->app_hash); - _r_obj_dereference (ptr_log_object); + if (item_id != INVALID_INT) + { + NMLVGETINFOTIP nmlvgit = {0}; + + nmlvgit.hdr.idFrom = (UINT_PTR)listview_id; + nmlvgit.iItem = item_id; + nmlvgit.lParam = 0; + + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), _app_gettooltip (app.GetHWND (), &nmlvgit)); + } + } + + _r_obj_dereference (ptr_log); } } else if (ctrl_id == IDC_RULES_BTN) { - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_NOTIFY_TOOLTIP, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_NOTIFY_TOOLTIP, NULL)); } else if (ctrl_id == IDC_ALLOW_BTN) { - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_ACTION_ALLOW_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_ACTION_ALLOW_HINT, NULL)); } else if (ctrl_id == IDC_BLOCK_BTN) { - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_ACTION_BLOCK_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_ACTION_BLOCK_HINT, NULL)); } else if (ctrl_id == IDC_LATER_BTN) { - _r_str_copy (buffer, _countof (buffer), app.LocaleString (IDS_ACTION_LATER_HINT, nullptr)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), app.LocaleString (IDS_ACTION_LATER_HINT, NULL)); } else { - _r_str_copy (buffer, _countof (buffer), _r_ctrl_gettext (hwnd, ctrl_id)); + _r_str_copy (buffer, RTL_NUMBER_OF (buffer), _r_ctrl_gettext (hwnd, ctrl_id)); } if (!_r_str_isempty (buffer)) @@ -841,115 +854,113 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case WM_COMMAND: { - const INT ctrl_id = LOWORD (wparam); + INT ctrl_id = LOWORD (wparam); - if ((LOWORD (wparam) >= IDX_RULES_SPECIAL && LOWORD (wparam) <= INT (IDX_RULES_SPECIAL + rules_arr.size ()))) + if ((LOWORD (wparam) >= IDX_RULES_SPECIAL && LOWORD (wparam) <= IDX_RULES_SPECIAL + (INT)rules_arr.size ())) { - const size_t rule_idx = (LOWORD (wparam) - IDX_RULES_SPECIAL); + SIZE_T rule_idx = (LOWORD (wparam) - IDX_RULES_SPECIAL); PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); if (!ptr_rule_object) return FALSE; - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) { - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (hwnd, false)); + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (hwnd, FALSE)); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - - if (ptr_log) + if (ptr_log->app_hash && !(ptr_rule->is_forservices && (ptr_log->app_hash == config.ntoskrnl_hash || ptr_log->app_hash == config.svchost_hash))) { - if (ptr_log->app_hash && !(ptr_rule->is_forservices && (ptr_log->app_hash == config.ntoskrnl_hash || ptr_log->app_hash == config.svchost_hash))) + PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); + + if (ptr_app_object) { - PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); + PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; - if (ptr_app_object) + if (ptr_app) { - PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; + _app_freenotify (ptr_log->app_hash, ptr_app); - if (ptr_app) + BOOLEAN is_remove = ptr_rule->is_enabled && (ptr_rule->apps.find (ptr_log->app_hash) != ptr_rule->apps.end ()); + + if (is_remove) { - _app_freenotify (ptr_log->app_hash, ptr_app); + ptr_rule->apps.erase (ptr_log->app_hash); - const bool is_remove = ptr_rule->is_enabled && (ptr_rule->apps.find (ptr_log->app_hash) != ptr_rule->apps.end ()); - - if (is_remove) - { - ptr_rule->apps.erase (ptr_log->app_hash); - - if (ptr_rule->apps.empty ()) - _app_ruleenable (ptr_rule, false); - } - else - { - ptr_rule->apps[ptr_log->app_hash] = true; - _app_ruleenable (ptr_rule, true); - } - - const INT listview_id = (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT); - const INT app_listview_id = _app_getlistview_id (ptr_app->type); - const INT rule_listview_id = _app_getlistview_id (ptr_rule->type); - - { - const INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, ptr_log->app_hash); - - if (item_pos != INVALID_INT) - { - _r_fastlock_acquireshared (&lock_checkbox); - _app_setappiteminfo (app.GetHWND (), app_listview_id, item_pos, ptr_log->app_hash, ptr_app); - _r_fastlock_releaseshared (&lock_checkbox); - } - } - - { - const INT item_pos = _app_getposition (app.GetHWND (), rule_listview_id, rule_idx); - - if (item_pos != INVALID_INT) - { - _r_fastlock_acquireshared (&lock_checkbox); - _app_setruleiteminfo (app.GetHWND (), rule_listview_id, item_pos, ptr_rule, false); - _r_fastlock_releaseshared (&lock_checkbox); - } - } - - OBJECTS_VEC rules; - rules.push_back (ptr_rule_object); - - _wfp_create4filters (_wfp_getenginehandle (), rules, __LINE__); - - if (listview_id == app_listview_id || listview_id == rule_listview_id) - { - _app_listviewsort (app.GetHWND (), listview_id); - _r_listview_redraw (app.GetHWND (), listview_id); - } - - _app_refreshstatus (app.GetHWND (), listview_id); - _app_profile_save (); + if (ptr_rule->apps.empty ()) + _app_ruleenable (ptr_rule, FALSE); + } + else + { + ptr_rule->apps[ptr_log->app_hash] = TRUE; + _app_ruleenable (ptr_rule, TRUE); } - _r_obj_dereference (ptr_app_object); + INT listview_id = (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT); + INT app_listview_id = _app_getlistview_id (ptr_app->type); + INT rule_listview_id = _app_getlistview_id (ptr_rule->type); + + { + INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, ptr_log->app_hash); + + if (item_pos != INVALID_INT) + { + _r_fastlock_acquireshared (&lock_checkbox); + _app_setappiteminfo (app.GetHWND (), app_listview_id, item_pos, ptr_log->app_hash, ptr_app); + _r_fastlock_releaseshared (&lock_checkbox); + } + } + + { + INT item_pos = _app_getposition (app.GetHWND (), rule_listview_id, rule_idx); + + if (item_pos != INVALID_INT) + { + _r_fastlock_acquireshared (&lock_checkbox); + _app_setruleiteminfo (app.GetHWND (), rule_listview_id, item_pos, ptr_rule, FALSE); + _r_fastlock_releaseshared (&lock_checkbox); + } + } + + OBJECTS_VEC rules; + rules.push_back (ptr_rule_object); + + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create4filters (hengine, rules, __LINE__); + + if (listview_id == app_listview_id || listview_id == rule_listview_id) + { + _app_listviewsort (app.GetHWND (), listview_id, INVALID_INT, FALSE); + _r_listview_redraw (app.GetHWND (), listview_id, INVALID_INT); + } + + _app_refreshstatus (app.GetHWND (), listview_id); + _app_profile_save (NULL); } + + _r_obj2_dereference (ptr_app_object); } } - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); return FALSE; } - else if ((ctrl_id >= IDX_TIMER && ctrl_id <= INT (IDX_TIMER + timers.size ()))) + else if ((ctrl_id >= IDX_TIMER && ctrl_id <= IDX_TIMER + (INT)timers.size ())) { if (!_r_ctrl_isenabled (hwnd, IDC_ALLOW_BTN)) return FALSE; - const size_t timer_idx = (ctrl_id - IDX_TIMER); + SIZE_T timer_idx = (ctrl_id - IDX_TIMER); _app_notifycommand (hwnd, IDC_ALLOW_BTN, timers.at (timer_idx)); @@ -966,35 +977,30 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case IDC_FILE_TEXT: { - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (hwnd, false)); + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (hwnd, FALSE)); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); - if (ptr_log) + if (ptr_app_object) { - PR_OBJECT ptr_app_object = _app_getappitem (ptr_log->app_hash); + PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; - if (ptr_app_object) + if (ptr_app) { - PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; + INT listview_id = _app_getlistview_id (ptr_app->type); - if (ptr_app) - { - const INT listview_id = _app_getlistview_id (ptr_app->type); + if (listview_id) + _app_showitem (app.GetHWND (), listview_id, _app_getposition (app.GetHWND (), listview_id, ptr_log->app_hash), INVALID_INT); - if (listview_id) - _app_showitem (app.GetHWND (), listview_id, _app_getposition (app.GetHWND (), listview_id, ptr_log->app_hash)); - - _r_wnd_toggle (app.GetHWND (), true); - } - - _r_obj_dereference (ptr_app_object); + _r_wnd_toggle (app.GetHWND (), TRUE); } + + _r_obj2_dereference (ptr_app_object); } - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); } break; @@ -1008,7 +1014,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp NMHDR hdr = {0}; hdr.code = BCN_DROPDOWN; - hdr.idFrom = ctrl_id; + hdr.idFrom = (UINT_PTR)ctrl_id; hdr.hwndFrom = GetDlgItem (hwnd, ctrl_id); SendMessage (hwnd, WM_NOTIFY, TRUE, (LPARAM)&hdr); @@ -1037,7 +1043,7 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case IDM_EDITRULES: { - _r_wnd_toggle (app.GetHWND (), true); + _r_wnd_toggle (app.GetHWND (), TRUE); _app_settab_id (app.GetHWND (), _app_getlistview_id (DataRuleCustom)); break; @@ -1046,84 +1052,79 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case IDM_OPENRULESEDITOR: { PITEM_RULE ptr_rule = new ITEM_RULE; - PR_OBJECT ptr_rule_object = _r_obj_allocate (ptr_rule, &_app_dereferencerule); + PR_OBJECT ptr_rule_object = _r_obj2_allocateex (ptr_rule, &_app_dereferencerule); - size_t app_hash = 0; - PR_OBJECT ptr_log_object = _app_notifyget_obj (_app_notifyget_id (hwnd, false)); + SIZE_T app_hash = 0; + PITEM_LOG ptr_log = _app_notifyget_obj (_app_notifyget_id (hwnd, FALSE)); - if (ptr_log_object) + if (ptr_log) { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; + app_hash = ptr_log->app_hash; - if (ptr_log) + ptr_rule->apps[app_hash] = TRUE; + ptr_rule->protocol = ptr_log->protocol; + ptr_rule->direction = ptr_log->direction; + + PR_OBJECT ptr_app_object = _app_getappitem (app_hash); + + if (ptr_app_object) { - app_hash = ptr_log->app_hash; + PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; - ptr_rule->apps[app_hash] = true; - ptr_rule->protocol = ptr_log->protocol; - ptr_rule->direction = ptr_log->direction; + if (ptr_app) + _app_freenotify (app_hash, ptr_app); - PR_OBJECT ptr_app_object = _app_getappitem (app_hash); - - if (ptr_app_object) - { - PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; - - if (ptr_app) - _app_freenotify (app_hash, ptr_app); - - _r_obj_dereference (ptr_app_object); - } - - LPWSTR rule = nullptr; - - if (_app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, ptr_log->remote_port, &rule, FMTADDR_AS_RULE)) - { - size_t len = _r_str_length (rule); - - _r_str_alloc (&ptr_rule->pname, len, rule); - _r_str_alloc (&ptr_rule->prule_remote, len, rule); - } - - SAFE_DELETE_ARRAY (rule); + _r_obj2_dereference (ptr_app_object); } - _r_obj_dereference (ptr_log_object); + LPWSTR rule = NULL; + + if (_app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, ptr_log->remote_port, &rule, FMTADDR_AS_RULE)) + { + SIZE_T len = _r_str_length (rule); + + _r_str_alloc (&ptr_rule->pname, len, rule); + _r_str_alloc (&ptr_rule->prule_remote, len, rule); + } + + SAFE_DELETE_MEMORY (rule); + + _r_obj_dereference (ptr_log); } else { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); break; } ptr_rule->type = DataRuleCustom; - ptr_rule->is_block = false; + ptr_rule->is_block = FALSE; - _app_ruleenable (ptr_rule, true); + _app_ruleenable (ptr_rule, TRUE); - if (DialogBoxParam (nullptr, MAKEINTRESOURCE (IDD_EDITOR), app.GetHWND (), &EditorProc, (LPARAM)ptr_rule_object)) + if (DialogBoxParam (NULL, MAKEINTRESOURCE (IDD_EDITOR), app.GetHWND (), &EditorProc, (LPARAM)ptr_rule_object)) { - const size_t rule_idx = rules_arr.size (); - rules_arr.push_back (_r_obj_reference (ptr_rule_object)); + SIZE_T rule_idx = rules_arr.size (); + rules_arr.push_back (_r_obj2_reference (ptr_rule_object)); - const INT listview_id = (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (app.GetHWND (), IDC_TAB, INVALID_INT); // set rule information - const INT rules_listview_id = _app_getlistview_id (ptr_rule->type); + INT rules_listview_id = _app_getlistview_id (ptr_rule->type); if (rules_listview_id) { - const INT item_id = _r_listview_getitemcount (hwnd, rules_listview_id); + INT item_id = _r_listview_getitemcount (hwnd, rules_listview_id, FALSE); _r_fastlock_acquireshared (&lock_checkbox); _r_listview_additem (app.GetHWND (), rules_listview_id, item_id, 0, ptr_rule->pname, _app_getruleicon (ptr_rule), _app_getrulegroup (ptr_rule), rule_idx); - _app_setruleiteminfo (app.GetHWND (), rules_listview_id, item_id, ptr_rule, true); + _app_setruleiteminfo (app.GetHWND (), rules_listview_id, item_id, ptr_rule, TRUE); _r_fastlock_releaseshared (&lock_checkbox); if (rules_listview_id == listview_id) - _app_listviewsort (app.GetHWND (), listview_id); + _app_listviewsort (app.GetHWND (), listview_id, INVALID_INT, FALSE); } // set app information @@ -1135,11 +1136,11 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp if (ptr_app) { - const INT app_listview_id = _app_getlistview_id (ptr_app->type); + INT app_listview_id = _app_getlistview_id (ptr_app->type); if (app_listview_id) { - const INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, app_hash); + INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -1149,18 +1150,18 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp } if (app_listview_id == listview_id) - _app_listviewsort (app.GetHWND (), listview_id); + _app_listviewsort (app.GetHWND (), listview_id, INVALID_INT, FALSE); } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } _app_refreshstatus (app.GetHWND (), listview_id); - _app_profile_save (); + _app_profile_save (NULL); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); break; } @@ -1168,13 +1169,13 @@ INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp case IDM_COPY: // ctrl+c case IDM_SELECT_ALL: // ctrl+a { - const HWND hedit = GetFocus (); + HWND hedit = GetFocus (); if (hedit) { WCHAR class_name[64] = {0}; - if (GetClassName (hedit, class_name, _countof (class_name)) > 0) + if (GetClassName (hedit, class_name, RTL_NUMBER_OF (class_name)) > 0) { if (_r_str_compare (class_name, WC_EDIT) == 0) { diff --git a/src/notifications.hpp b/src/notifications.hpp index a08671e0..4eb2ae31 100644 --- a/src/notifications.hpp +++ b/src/notifications.hpp @@ -3,25 +3,25 @@ #pragma once -void _app_notifycreatewindow (); -bool _app_notifycommand (HWND hwnd, INT button_id, time_t seconds); +VOID _app_notifycreatewindow (); +BOOLEAN _app_notifycommand (HWND hwnd, INT button_id, time_t seconds); -bool _app_notifyadd (HWND hwnd, PR_OBJECT ptr_log_object, PITEM_APP ptr_app); -void _app_freenotify (size_t app_hash, PITEM_APP ptr_app); +BOOLEAN _app_notifyadd (HWND hwnd, PITEM_LOG ptr_log, PITEM_APP ptr_app); +VOID _app_freenotify (SIZE_T app_hash, PITEM_APP ptr_app); -size_t _app_notifyget_id (HWND hwnd, bool is_nearest); -PR_OBJECT _app_notifyget_obj (size_t app_hash); +SIZE_T _app_notifyget_id (HWND hwnd, BOOLEAN is_nearest); +PITEM_LOG _app_notifyget_obj (SIZE_T app_hash); -bool _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, bool is_forced, bool is_safety); -void _app_notifyhide (HWND hwnd); +BOOLEAN _app_notifyshow (HWND hwnd, PITEM_LOG ptr_log, BOOLEAN is_forced, BOOLEAN is_safety); +VOID _app_notifyhide (HWND hwnd); -void _app_notifyplaysound (); +VOID _app_notifyplaysound (); -void _app_notifyrefresh (HWND hwnd, bool is_safety); +VOID _app_notifyrefresh (HWND hwnd, BOOLEAN is_safety); -void _app_notifysetpos (HWND hwnd, bool is_forced); +VOID _app_notifysetpos (HWND hwnd, BOOLEAN is_forced); -HFONT _app_notifyfontinit (HWND hwnd, PLOGFONT plf, LONG height, LONG weight, LPCWSTR name, BYTE is_underline); -void _app_notifyfontset (HWND hwnd); +HFONT _app_notifyfontinit (HWND hwnd, PLOGFONT plf, LONG height, LONG weight, LPCWSTR name, BOOLEAN is_underline); +VOID _app_notifyfontset (HWND hwnd); INT_PTR CALLBACK NotificationProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); diff --git a/src/profile.cpp b/src/profile.cpp index 664d261c..1ff698f7 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -3,7 +3,7 @@ #include "global.hpp" -LONG_PTR _app_getappinfo (size_t app_hash, EnumInfo info_key) +LONG_PTR _app_getappinfo (SIZE_T app_hash, ENUM_INFO_DATA info_key) { PR_OBJECT ptr_app_object = _app_getappitem (app_hash); @@ -38,11 +38,11 @@ LONG_PTR _app_getappinfo (size_t app_hash, EnumInfo info_key) } else if (info_key == InfoIconId) { - result = ptr_app->icon_id; + result = (LONG_PTR)ptr_app->icon_id; } else if (info_key == InfoListviewId) { - result = _app_getlistview_id (ptr_app->type); + result = (LONG_PTR)_app_getlistview_id (ptr_app->type); } else if (info_key == InfoIsSilent) { @@ -54,17 +54,17 @@ LONG_PTR _app_getappinfo (size_t app_hash, EnumInfo info_key) } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); return result; } -bool _app_setappinfo (size_t app_hash, EnumInfo info_key, LONG_PTR info_value) +BOOLEAN _app_setappinfo (SIZE_T app_hash, ENUM_INFO_DATA info_key, LONG_PTR info_value) { PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) - return false; + return FALSE; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; @@ -72,16 +72,16 @@ bool _app_setappinfo (size_t app_hash, EnumInfo info_key, LONG_PTR info_value) { if (info_key == InfoIsUndeletable) { - ptr_app->is_undeletable = info_value ? true : false; + ptr_app->is_undeletable = info_value ? TRUE : FALSE; } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); - return true; + return TRUE; } -size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t timer, time_t last_notify, bool is_silent, bool is_enabled) +SIZE_T _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t timer, time_t last_notify, BOOLEAN is_silent, BOOLEAN is_enabled) { if (_r_str_isempty (path) || PathIsDirectory (path)) return 0; @@ -89,35 +89,35 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti // prevent possible duplicate apps entries with short path (issue #640) WCHAR path_full[1024] = {0}; - if (_r_str_find (path, INVALID_SIZE_T, L'~') != INVALID_SIZE_T) + if (_r_str_find (path, INVALID_SIZE_T, L'~', 0) != INVALID_SIZE_T) { - if (GetLongPathName (path, path_full, _countof (path_full))) + if (GetLongPathName (path, path_full, RTL_NUMBER_OF (path_full))) path = path_full; } - const size_t app_length = _r_str_length (path); - const size_t app_hash = _r_str_hash (path); + SIZE_T app_length = _r_str_length (path); + SIZE_T app_hash = _r_str_hash (path); if (_app_isappfound (app_hash)) return app_hash; // already exists PITEM_APP ptr_app = new ITEM_APP; - const bool is_ntoskrnl = (app_hash == config.ntoskrnl_hash); + BOOLEAN is_ntoskrnl = (app_hash == config.ntoskrnl_hash); rstring real_path; - if (_r_str_compare (path, L"\\device\\", 8) == 0) // device path + if (_r_str_compare_length (path, L"\\device\\", 8) == 0) // device path { real_path = path; ptr_app->type = DataAppDevice; } - else if (_r_str_compare (path, L"S-1-", 4) == 0) // windows store (win8+) + else if (_r_str_compare_length (path, L"S-1-", 4) == 0) // windows store (win8+) { ptr_app->type = DataAppUWP; - _app_item_get (DataAppUWP, app_hash, nullptr, &real_path, timestamp ? nullptr : ×tamp, nullptr); + _app_item_get (DataAppUWP, app_hash, NULL, &real_path, timestamp ? NULL : ×tamp, NULL); } else if (PathIsNetworkPath (path)) // network path { @@ -129,9 +129,9 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti { real_path = path; - if (!is_ntoskrnl && _r_str_find (real_path, real_path.GetLength (), OBJ_NAME_PATH_SEPARATOR) == INVALID_SIZE_T) + if (!is_ntoskrnl && _r_str_find (real_path, real_path.GetLength (), OBJ_NAME_PATH_SEPARATOR, 0) == INVALID_SIZE_T) { - if (_app_item_get (DataAppService, app_hash, nullptr, &real_path, timestamp ? nullptr : ×tamp, nullptr)) + if (_app_item_get (DataAppService, app_hash, NULL, &real_path, timestamp ? NULL : ×tamp, NULL)) ptr_app->type = DataAppService; else @@ -148,9 +148,9 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti if (!real_path.IsEmpty () && ptr_app->type == DataAppRegular) { - const DWORD dwAttr = GetFileAttributes (real_path); + DWORD dwAttr = GetFileAttributes (real_path); - ptr_app->is_system = is_ntoskrnl || (dwAttr & FILE_ATTRIBUTE_SYSTEM) == FILE_ATTRIBUTE_SYSTEM || (_r_str_compare (real_path, config.windows_dir, config.wd_length) == 0); + ptr_app->is_system = is_ntoskrnl || (dwAttr & FILE_ATTRIBUTE_SYSTEM) == FILE_ATTRIBUTE_SYSTEM || (_r_str_compare_length (real_path, config.windows_dir, config.wd_length) == 0); } _r_str_alloc (&ptr_app->original_path, app_length, path); @@ -166,12 +166,12 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti _app_getdisplayname (app_hash, ptr_app, &ptr_app->display_name); // get signature information - if (app.ConfigGet (L"IsCertificatesEnabled", false).AsBool ()) + if (app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE)) { PR_OBJECT ptr_signer_object = _app_getsignatureinfo (app_hash, ptr_app); if (ptr_signer_object) - _r_obj_dereference (ptr_signer_object); + _r_obj2_dereference (ptr_signer_object); } ptr_app->is_enabled = is_enabled; @@ -182,15 +182,15 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti ptr_app->last_notify = last_notify; if (ptr_app->type == DataAppService || ptr_app->type == DataAppUWP) - ptr_app->is_undeletable = true; + ptr_app->is_undeletable = TRUE; // insert object into the map - apps[app_hash] = _r_obj_allocate (ptr_app, &_app_dereferenceapp); + apps[app_hash] = _r_obj2_allocateex (ptr_app, &_app_dereferenceapp); // insert item if (hwnd) { - const INT listview_id = _app_getlistview_id (ptr_app->type); + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { @@ -206,34 +206,51 @@ size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t ti return app_hash; } -PR_OBJECT _app_getappitem (size_t app_hash) +PR_OBJECT _app_getappitem (SIZE_T app_hash) { if (_app_isappfound (app_hash)) - return _r_obj_reference (apps[app_hash]); + return _r_obj2_reference (apps[app_hash]); - return nullptr; + return NULL; } -PR_OBJECT _app_getrulebyid (size_t idx) +PITEM_APP_HELPER _app_getapphelperitem (SIZE_T app_hash) +{ + if (_app_isapphelperfound (app_hash)) + { + PVOID ptr = apps_helper[app_hash]; + + if (ptr) + return (PITEM_APP_HELPER)_r_obj_reference (ptr); + } + + return NULL; +} + +PR_OBJECT _app_getrulebyid (SIZE_T idx) { if (idx != INVALID_SIZE_T && idx < rules_arr.size ()) - return _r_obj_reference (rules_arr.at (idx)); + { + PR_OBJECT ptr_rule_object = rules_arr.at (idx); - return nullptr; + if (ptr_rule_object) + return _r_obj2_reference (ptr_rule_object); + } + + return NULL; } -PR_OBJECT _app_getrulebyhash (size_t rule_hash) +PR_OBJECT _app_getrulebyhash (SIZE_T rule_hash) { if (!rule_hash) - return nullptr; + return NULL; - for (auto& p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - - if (!ptr_rule_object) + if (!p) continue; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) @@ -245,70 +262,68 @@ PR_OBJECT _app_getrulebyhash (size_t rule_hash) } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } - return nullptr; + return NULL; } -PR_OBJECT _app_getnetworkitem (size_t network_hash) +PITEM_NETWORK _app_getnetworkitem (SIZE_T network_hash) { - if (network_map.find (network_hash) == network_map.end ()) - return nullptr; + if (network_map.find (network_hash) != network_map.end ()) + { + PVOID ptr = network_map[network_hash]; - return _r_obj_reference (network_map[network_hash]); + if (ptr) + return (PITEM_NETWORK)_r_obj_reference (ptr); + } + + return NULL; } -size_t _app_getnetworkapp (size_t network_hash) +SIZE_T _app_getnetworkapp (SIZE_T network_hash) { - PR_OBJECT ptr_network_object = _app_getnetworkitem (network_hash); - - if (!ptr_network_object) - return 0; - - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; + PITEM_NETWORK ptr_network = _app_getnetworkitem (network_hash); if (ptr_network) { - const size_t app_hash = ptr_network->app_hash; + SIZE_T app_hash = ptr_network->app_hash; - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); return app_hash; } - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); return 0; } -PR_OBJECT _app_getlogitem (size_t idx) +PITEM_LOG _app_getlogitem (SIZE_T idx) { - if (idx != INVALID_SIZE_T && idx < log_arr.size ()) - return _r_obj_reference (log_arr.at (idx)); + if (idx != INVALID_SIZE_T && idx < log_arr.size () && log_arr.at (idx) != NULL) + return (PITEM_LOG)_r_obj_reference (log_arr.at (idx)); - return nullptr; + return NULL; } -size_t _app_getlogapp (size_t idx) +SIZE_T _app_getlogapp (SIZE_T idx) { - PR_OBJECT ptr_log_object = _app_getlogitem (idx); - - if (!ptr_log_object) - return 0; - - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - size_t app_hash; + PITEM_LOG ptr_log = _app_getlogitem (idx); if (ptr_log) - app_hash = ptr_log->app_hash; + { + SIZE_T app_hash = ptr_log->app_hash; - _r_obj_dereference (ptr_log_object); + _r_obj_dereference (ptr_log); - return app_hash; + return app_hash; + } + + return 0; } -COLORREF _app_getappcolor (INT listview_id, size_t app_hash) +COLORREF _app_getappcolor (INT listview_id, SIZE_T app_hash) { rstring color_value; @@ -317,46 +332,46 @@ COLORREF _app_getappcolor (INT listview_id, size_t app_hash) if (!ptr_app_object) return 0; - const bool is_profilelist = (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_RULES_CUSTOM); - const bool is_networklist = (listview_id == IDC_NETWORK) || (listview_id == IDC_LOG); - const bool is_editorlist = (listview_id == IDC_RULE_APPS_ID); + BOOLEAN is_profilelist = (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_RULES_CUSTOM); + BOOLEAN is_networklist = (listview_id >= IDC_NETWORK && listview_id <= IDC_LOG); + BOOLEAN is_editorlist = (listview_id == IDC_RULE_APPS_ID); PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { - if (app.ConfigGet (L"IsHighlightInvalid", true, L"colors").AsBool () && !_app_isappexists (ptr_app)) + if (app.ConfigGetBoolean (L"IsHighlightInvalid", TRUE, L"colors") && !_app_isappexists (ptr_app)) color_value = L"ColorInvalid"; - else if (app.ConfigGet (L"IsHighlightTimer", true, L"colors").AsBool () && _app_istimeractive (ptr_app)) + else if (app.ConfigGetBoolean (L"IsHighlightTimer", TRUE, L"colors") && _app_istimeractive (ptr_app)) color_value = L"ColorTimer"; - else if (!is_networklist && !ptr_app->is_silent && app.ConfigGet (L"IsHighlightConnection", true, L"colors").AsBool () && _app_isapphaveconnection (app_hash)) + else if (!is_networklist && !ptr_app->is_silent && app.ConfigGetBoolean (L"IsHighlightConnection", TRUE, L"colors") && _app_isapphaveconnection (app_hash)) color_value = L"ColorConnection"; - else if (app.ConfigGet (L"IsHighlightSigned", true, L"colors").AsBool () && !ptr_app->is_silent && app.ConfigGet (L"IsCertificatesEnabled", false).AsBool () && ptr_app->is_signed) + else if (app.ConfigGetBoolean (L"IsHighlightSigned", TRUE, L"colors") && !ptr_app->is_silent && app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE) && ptr_app->is_signed) color_value = L"ColorSigned"; - else if ((!is_profilelist || !app.ConfigGet (L"IsEnableSpecialGroup", true).AsBool ()) && (app.ConfigGet (L"IsHighlightSpecial", true, L"colors").AsBool () && _app_isapphaverule (app_hash))) + else if ((!is_profilelist || !app.ConfigGetBoolean (L"IsEnableSpecialGroup", TRUE)) && (app.ConfigGetBoolean (L"IsHighlightSpecial", TRUE, L"colors") && _app_isapphaverule (app_hash))) color_value = L"ColorSpecial"; - else if (is_profilelist && app.ConfigGet (L"IsHighlightSilent", true, L"colors").AsBool () && ptr_app->is_silent) + else if (is_profilelist && app.ConfigGetBoolean (L"IsHighlightSilent", TRUE, L"colors") && ptr_app->is_silent) color_value = L"ColorSilent"; - else if (!is_profilelist && !is_editorlist && app.ConfigGet (L"IsHighlightService", true, L"colors").AsBool () && ptr_app->type == DataAppService) + else if (!is_profilelist && !is_editorlist && app.ConfigGetBoolean (L"IsHighlightService", TRUE, L"colors") && ptr_app->type == DataAppService) color_value = L"ColorService"; - else if (!is_profilelist && !is_editorlist && app.ConfigGet (L"IsHighlightPackage", true, L"colors").AsBool () && ptr_app->type == DataAppUWP) + else if (!is_profilelist && !is_editorlist && app.ConfigGetBoolean (L"IsHighlightPackage", TRUE, L"colors") && ptr_app->type == DataAppUWP) color_value = L"ColorPackage"; - else if (app.ConfigGet (L"IsHighlightPico", true, L"colors").AsBool () && ptr_app->type == DataAppPico) + else if (app.ConfigGetBoolean (L"IsHighlightPico", TRUE, L"colors") && ptr_app->type == DataAppPico) color_value = L"ColorPico"; - else if (app.ConfigGet (L"IsHighlightSystem", true, L"colors").AsBool () && ptr_app->is_system) + else if (app.ConfigGetBoolean (L"IsHighlightSystem", TRUE, L"colors") && ptr_app->is_system) color_value = L"ColorSystem"; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); if (color_value.IsEmpty ()) return 0; @@ -364,7 +379,7 @@ COLORREF _app_getappcolor (INT listview_id, size_t app_hash) return _app_getcolorvalue (_r_str_hash (color_value)); } -void _app_freeapplication (size_t app_hash) +VOID _app_freeapplication (SIZE_T app_hash) { if (!app_hash) return; @@ -374,12 +389,12 @@ void _app_freeapplication (size_t app_hash) for (auto &p : rules_arr) { index += 1; - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - if (!ptr_rule_object) + if (!p) continue; - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) { @@ -391,20 +406,20 @@ void _app_freeapplication (size_t app_hash) if (ptr_rule->is_enabled && ptr_rule->apps.empty ()) { - ptr_rule->is_enabled = false; - ptr_rule->is_haveerrors = false; + ptr_rule->is_enabled = FALSE; + ptr_rule->is_haveerrors = FALSE; } - const INT rule_listview_id = _app_getlistview_id (ptr_rule->type); + INT rule_listview_id = _app_getlistview_id (ptr_rule->type); if (rule_listview_id) { - const INT item_pos = _app_getposition (app.GetHWND (), rule_listview_id, index); + INT item_pos = _app_getposition (app.GetHWND (), rule_listview_id, index); if (item_pos != INVALID_INT) { _r_fastlock_acquireshared (&lock_checkbox); - _app_setruleiteminfo (app.GetHWND (), rule_listview_id, item_pos, ptr_rule, false); + _app_setruleiteminfo (app.GetHWND (), rule_listview_id, item_pos, ptr_rule, FALSE); _r_fastlock_releaseshared (&lock_checkbox); } } @@ -412,27 +427,27 @@ void _app_freeapplication (size_t app_hash) } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } apps.erase (app_hash); } -void _app_getcount (PITEM_STATUS ptr_status) +VOID _app_getcount (PITEM_STATUS ptr_status) { for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { - const bool is_used = _app_isappused (ptr_app, app_hash); + BOOLEAN is_used = _app_isappused (ptr_app, app_hash); if (_app_istimeractive (ptr_app)) ptr_status->apps_timer_count += 1; @@ -444,16 +459,15 @@ void _app_getcount (PITEM_STATUS ptr_status) ptr_status->apps_count += 1; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - for (auto& p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - - if (!ptr_rule_object) + if (!p) continue; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) @@ -473,17 +487,20 @@ void _app_getcount (PITEM_STATUS ptr_status) } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } -INT _app_getappgroup (size_t app_hash, const PITEM_APP ptr_app) +INT _app_getappgroup (SIZE_T app_hash, PITEM_APP ptr_app) { // apps with special rule - if (app.ConfigGet (L"IsEnableSpecialGroup", true).AsBool () && _app_isapphaverule (app_hash)) + if (app.ConfigGetBoolean (L"IsEnableSpecialGroup", TRUE) && _app_isapphaverule (app_hash)) return 1; - return ptr_app->is_enabled ? 0 : 2; + if (!ptr_app->is_enabled) + return 2; + + return 0; } INT _app_getrulegroup (const PITEM_RULE ptr_rule) @@ -491,9 +508,6 @@ INT _app_getrulegroup (const PITEM_RULE ptr_rule) if (!ptr_rule->is_enabled) return 2; - //if (app.ConfigGet (L"IsEnableSpecialGroup", true).AsBool () && (ptr_rule->is_forservices || !ptr_rule->apps.empty ())) - // return 1; - return 0; } @@ -505,7 +519,7 @@ INT _app_getruleicon (const PITEM_RULE ptr_rule) return 0; } -COLORREF _app_getrulecolor (INT listview_id, size_t rule_idx) +COLORREF _app_getrulecolor (INT listview_id, SIZE_T rule_idx) { PR_OBJECT ptr_rule_object = _app_getrulebyid (rule_idx); @@ -518,14 +532,14 @@ COLORREF _app_getrulecolor (INT listview_id, size_t rule_idx) if (ptr_rule) { - if (app.ConfigGet (L"IsHighlightInvalid", true, L"colors").AsBool () && ptr_rule->is_enabled && ptr_rule->is_haveerrors) + if (app.ConfigGetBoolean (L"IsHighlightInvalid", TRUE, L"colors") && ptr_rule->is_enabled && ptr_rule->is_haveerrors) color_value = L"ColorInvalid"; - else if (app.ConfigGet (L"IsHighlightSpecial", true, L"colors").AsBool () && !ptr_rule->apps.empty ()) + else if (app.ConfigGetBoolean (L"IsHighlightSpecial", TRUE, L"colors") && !ptr_rule->apps.empty ()) color_value = L"ColorSpecial"; } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); if (color_value.IsEmpty ()) return 0; @@ -533,67 +547,16 @@ COLORREF _app_getrulecolor (INT listview_id, size_t rule_idx) return _app_getcolorvalue (_r_str_hash (color_value)); } -rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) +rstring _app_gettooltip (HWND hwnd, LPNMLVGETINFOTIP lpnmlv) { rstring result; - if ((listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP) || listview_id == IDC_RULE_APPS_ID || listview_id == IDC_NETWORK || listview_id == IDC_LOG) + INT listview_id = PtrToInt ((LPVOID)lpnmlv->hdr.idFrom); + BOOLEAN is_appslist = (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_APPS_UWP); + + if (is_appslist || listview_id == IDC_RULE_APPS_ID) { - const bool is_profilelist = (listview_id >= IDC_APPS_PROFILE && listview_id <= IDC_RULES_CUSTOM); - const bool is_networklist = (listview_id == IDC_NETWORK) || (listview_id == IDC_LOG); - - if (listview_id == IDC_NETWORK) - { - PR_OBJECT ptr_network_object = _app_getnetworkitem (lparam); - - if (ptr_network_object) - { - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network) - { - // display tooltips for non-existing apps in network tab (issue #422) - if (!_app_isappfound (ptr_network->app_hash)) - { - result = ptr_network->path; - - _r_obj_dereference (ptr_network_object); - - return result; - } - - lparam = ptr_network->app_hash; - } - - _r_obj_dereference (ptr_network_object); - } - } - else if (listview_id == IDC_LOG) - { - PR_OBJECT ptr_log_object = _app_getlogitem (lparam); - - if (ptr_log_object) - { - PITEM_LOG ptr_log = (PITEM_LOG)ptr_log_object->pdata; - - if (ptr_log) - { - if (!_app_isappfound (ptr_log->app_hash)) - { - result = ptr_log->path; - - _r_obj_dereference (ptr_log_object); - - return result; - } - - lparam = ptr_log->app_hash; - } - - _r_obj_dereference (ptr_log_object); - } - } - + LPARAM lparam = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); PR_OBJECT ptr_app_object = _app_getappitem (lparam); if (ptr_app_object) @@ -617,48 +580,48 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) if (ptr_version_object->pdata) app_info.AppendFormat (SZ_TAB L"%s\r\n", (LPCWSTR)ptr_version_object->pdata); - _r_obj_dereference (ptr_version_object); + _r_obj2_dereference (ptr_version_object); } } else if (ptr_app->type == DataAppService) { rstring display_name; - if (_app_item_get (ptr_app->type, lparam, &display_name, nullptr, nullptr, nullptr)) + if (_app_item_get (ptr_app->type, lparam, &display_name, NULL, NULL, NULL)) app_info.AppendFormat (SZ_TAB L"%s" SZ_TAB_CRLF L"%s\r\n", ptr_app->original_path, display_name.GetString ()); } else if (ptr_app->type == DataAppUWP) { rstring display_name; - if (_app_item_get (ptr_app->type, lparam, &display_name, nullptr, nullptr, nullptr)) + if (_app_item_get (ptr_app->type, lparam, &display_name, NULL, NULL, NULL)) app_info.AppendFormat (SZ_TAB L"%s\r\n", display_name.GetString ()); } // signature information - if (app.ConfigGet (L"IsCertificatesEnabled", false).AsBool () && ptr_app->is_signed) + if (app.ConfigGetBoolean (L"IsCertificatesEnabled", FALSE) && ptr_app->is_signed) { PR_OBJECT ptr_signature_object = _app_getsignatureinfo (lparam, ptr_app); if (ptr_signature_object) { if (ptr_signature_object->pdata) - app_info.AppendFormat (SZ_TAB L"%s: %s\r\n", app.LocaleString (IDS_SIGNATURE, nullptr).GetString (), (LPCWSTR)ptr_signature_object->pdata); + app_info.AppendFormat (SZ_TAB L"%s: %s\r\n", app.LocaleString (IDS_SIGNATURE, NULL).GetString (), (LPCWSTR)ptr_signature_object->pdata); - _r_obj_dereference (ptr_signature_object); + _r_obj2_dereference (ptr_signature_object); } } if (!app_info.IsEmpty ()) { - app_info.InsertFormat (0, L"%s:\r\n", app.LocaleString (IDS_FILE, nullptr).GetString ()); + app_info.InsertFormat (0, L"%s:\r\n", app.LocaleString (IDS_FILE, NULL).GetString ()); result.Append (app_info); } } // app timer if (_app_istimeractive (ptr_app)) - result.AppendFormat (L"%s:" SZ_TAB_CRLF L"%s\r\n", app.LocaleString (IDS_TIMELEFT, nullptr).GetString (), _r_fmt_interval (ptr_app->timer - _r_unixtime_now (), 3).GetString ()); + result.AppendFormat (L"%s:" SZ_TAB_CRLF L"%s\r\n", app.LocaleString (IDS_TIMELEFT, NULL).GetString (), _r_fmt_interval (ptr_app->timer - _r_unixtime_now (), 3).GetString ()); // app rules { @@ -666,7 +629,7 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) if (!app_rules.IsEmpty ()) { - app_rules.InsertFormat (0, L"%s:" SZ_TAB_CRLF, app.LocaleString (IDS_RULE, nullptr).GetString ()); + app_rules.InsertFormat (0, L"%s:" SZ_TAB_CRLF, app.LocaleString (IDS_RULE, NULL).GetString ()); app_rules.Append (L"\r\n"); result.Append (app_rules); @@ -679,43 +642,44 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) // app type if (ptr_app->type == DataAppNetwork) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_NETWORK, nullptr).GetString ()); + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_NETWORK, NULL).GetString ()); else if (ptr_app->type == DataAppPico) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_PICO, nullptr).GetString ()); + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_PICO, NULL).GetString ()); - else if (!is_profilelist && ptr_app->type == DataAppService) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SERVICE, nullptr).GetString ()); + else if (!is_appslist && ptr_app->type == DataAppService) + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SERVICE, NULL).GetString ()); - else if (!is_profilelist && ptr_app->type == DataAppUWP) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_PACKAGE, nullptr).GetString ()); + else if (!is_appslist && ptr_app->type == DataAppUWP) + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_PACKAGE, NULL).GetString ()); // app settings if (ptr_app->is_system) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SYSTEM, nullptr).GetString ()); + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SYSTEM, NULL).GetString ()); - if (!is_networklist && _app_isapphaveconnection (lparam)) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_CONNECTION, nullptr).GetString ()); + if (_app_isapphaveconnection (lparam)) + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_CONNECTION, NULL).GetString ()); - if (is_profilelist && ptr_app->is_silent) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SILENT, nullptr).GetString ()); + if (is_appslist && ptr_app->is_silent) + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_SILENT, NULL).GetString ()); if (!_app_isappexists (ptr_app)) - app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_INVALID, nullptr).GetString ()); + app_notes.AppendFormat (SZ_TAB L"%s\r\n", app.LocaleString (IDS_HIGHLIGHT_INVALID, NULL).GetString ()); if (!app_notes.IsEmpty ()) { - app_notes.InsertFormat (0, L"%s:\r\n", app.LocaleString (IDS_NOTES, nullptr).GetString ()); + app_notes.InsertFormat (0, L"%s:\r\n", app.LocaleString (IDS_NOTES, NULL).GetString ()); result.Append (app_notes); } } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } else if (listview_id >= IDC_RULES_BLOCKLIST && listview_id <= IDC_RULES_CUSTOM) { + LPARAM lparam = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); PR_OBJECT ptr_rule_object = _app_getrulebyid (lparam); if (ptr_rule_object) @@ -724,7 +688,7 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) if (ptr_rule) { - const rstring empty = app.LocaleString (IDS_STATUS_EMPTY, nullptr); + rstring empty = app.LocaleString (IDS_STATUS_EMPTY, NULL); rstring rule_remote = ptr_rule->prule_remote; rstring rule_local = ptr_rule->prule_local; @@ -742,11 +706,11 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) rule_local = empty; // rule information - result.Format (L"%s (#%" PR_SIZE_T L")\r\n%s:\r\n%s%s\r\n%s:\r\n%s%s", ptr_rule->pname, lparam, app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_REMOTE L")").GetString (), SZ_TAB, rule_remote.GetString (), app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_LOCAL L")").GetString (), SZ_TAB, rule_local.GetString ()); + result.Format (L"%s (#%" TEXT (PR_SIZE_T) L")\r\n%s:\r\n%s%s\r\n%s:\r\n%s%s", ptr_rule->pname, lparam, app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_REMOTE L")").GetString (), SZ_TAB, rule_remote.GetString (), app.LocaleString (IDS_RULE, L" (" SZ_DIRECTION_LOCAL L")").GetString (), SZ_TAB, rule_local.GetString ()); // rule apps if (ptr_rule->is_forservices || !ptr_rule->apps.empty ()) - result.AppendFormat (L"\r\n%s:\r\n%s%s", app.LocaleString (IDS_TAB_APPS, nullptr).GetString (), SZ_TAB, _app_rulesexpandapps (ptr_rule, true, SZ_TAB_CRLF).GetString ()); + result.AppendFormat (L"\r\n%s:\r\n%s%s", app.LocaleString (IDS_TAB_APPS, NULL).GetString (), SZ_TAB, _app_rulesexpandapps (ptr_rule, TRUE, SZ_TAB_CRLF).GetString ()); // rule notes { @@ -759,44 +723,113 @@ rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam) if (!buffer.IsEmpty ()) { - buffer.InsertFormat (0, L"\r\n%s:\r\n", app.LocaleString (IDS_NOTES, nullptr).GetString ()); + buffer.InsertFormat (0, L"\r\n%s:\r\n", app.LocaleString (IDS_NOTES, NULL).GetString ()); result.Append (buffer); } } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); + } + } + else if (listview_id == IDC_NETWORK) + { + LPARAM lparam = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); + PITEM_NETWORK ptr_network = _app_getnetworkitem (lparam); + + if (ptr_network) + { + LPWSTR local_fmt = NULL; + LPWSTR remote_fmt = NULL; + + _app_formataddress (ptr_network->af, 0, &ptr_network->local_addr, ptr_network->local_port, &local_fmt, 0); + _app_formataddress (ptr_network->af, 0, &ptr_network->remote_addr, ptr_network->remote_port, &remote_fmt, 0); + + result.Format (L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s", + (!_r_str_isempty (ptr_network->path) ? ptr_network->path : SZ_EMPTY), + app.LocaleString (IDS_ADDRESS, L" (" SZ_DIRECTION_LOCAL L")").GetString (), + !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY, + app.LocaleString (IDS_ADDRESS, L" (" SZ_DIRECTION_REMOTE L")").GetString (), + !_r_str_isempty (remote_fmt) ? remote_fmt : SZ_EMPTY, + app.LocaleString (IDS_PROTOCOL, NULL).GetString (), + _app_getprotoname (ptr_network->protocol, ptr_network->af).GetString (), + app.LocaleString (IDS_STATE, NULL).GetString (), + _app_getstatename (ptr_network->state, SZ_EMPTY).GetString () + ); + + SAFE_DELETE_MEMORY (local_fmt); + SAFE_DELETE_MEMORY (remote_fmt); + + _r_obj_dereference (ptr_network); + } + + } + else if (listview_id == IDC_LOG) + { + LPARAM lparam = _r_listview_getitemlparam (hwnd, listview_id, lpnmlv->iItem); + PITEM_LOG ptr_log = _app_getlogitem (lparam); + + if (ptr_log) + { + LPWSTR local_fmt = NULL; + LPWSTR remote_fmt = NULL; + + _app_formataddress (ptr_log->af, 0, &ptr_log->local_addr, ptr_log->local_port, &local_fmt, 0); + _app_formataddress (ptr_log->af, 0, &ptr_log->remote_addr, ptr_log->remote_port, &remote_fmt, 0); + + result.Format (L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s\r\n%s:\r\n" SZ_TAB L"%s", + (!_r_str_isempty (ptr_log->path) ? ptr_log->path : SZ_EMPTY), + app.LocaleString (IDS_DATE, NULL).GetString (), + _r_fmt_dateex (ptr_log->timestamp, FDTF_LONGDATE | FDTF_LONGTIME).GetString (), + app.LocaleString (IDS_ADDRESS, L" (" SZ_DIRECTION_LOCAL L")").GetString (), + !_r_str_isempty (local_fmt) ? local_fmt : SZ_EMPTY, + app.LocaleString (IDS_ADDRESS, L" (" SZ_DIRECTION_REMOTE L")").GetString (), + !_r_str_isempty (remote_fmt) ? remote_fmt : SZ_EMPTY, + app.LocaleString (IDS_PROTOCOL, NULL).GetString (), + _app_getprotoname (ptr_log->protocol, ptr_log->af).GetString (), + app.LocaleString (IDS_FILTER, NULL).GetString (), + _app_getfiltername (NULL, ptr_log->filter_name, SZ_EMPTY).GetString (), + app.LocaleString (IDS_DIRECTION, NULL).GetString (), + _app_getdirectionname (ptr_log->direction, ptr_log->is_loopback).GetString (), + app.LocaleString (IDS_STATE, NULL).GetString (), + (ptr_log->is_allow ? SZ_STATE_ALLOW : SZ_STATE_BLOCK) + ); + + SAFE_DELETE_MEMORY (local_fmt); + SAFE_DELETE_MEMORY (remote_fmt); + + _r_obj_dereference (ptr_log); } } else if (listview_id == IDC_RULE_REMOTE_ID || listview_id == IDC_RULE_LOCAL_ID) { - result = _r_listview_getitemtext (hwnd, listview_id, (INT)lparam, 0); + result = _r_listview_getitemtext (hwnd, listview_id, lpnmlv->iItem, 0); } return result; } -void _app_setappiteminfo (HWND hwnd, INT listview_id, INT item, size_t app_hash, PITEM_APP ptr_app) +VOID _app_setappiteminfo (HWND hwnd, INT listview_id, INT item, SIZE_T app_hash, PITEM_APP ptr_app) { if (!listview_id || item == INVALID_INT) return; - _app_getappicon (ptr_app, true, &ptr_app->icon_id, nullptr); + _app_getappicon (ptr_app, TRUE, &ptr_app->icon_id, NULL); _r_listview_setitem (hwnd, listview_id, item, 0, ptr_app->display_name, ptr_app->icon_id, _app_getappgroup (app_hash, ptr_app)); - _r_listview_setitem (hwnd, listview_id, item, 1, _r_fmt_date (ptr_app->timestamp, FDTF_SHORTDATE | FDTF_SHORTTIME)); + _r_listview_setitem (hwnd, listview_id, item, 1, _r_fmt_dateex (ptr_app->timestamp, FDTF_SHORTDATE | FDTF_SHORTTIME)); _r_listview_setitemcheck (hwnd, listview_id, item, ptr_app->is_enabled); } -void _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_rule, bool include_apps) +VOID _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_rule, BOOLEAN include_apps) { if (!listview_id || item == INVALID_INT) return; _r_listview_setitem (hwnd, listview_id, item, 0, ptr_rule->is_readonly && ptr_rule->type == DataRuleCustom ? _r_fmt (L"%s" SZ_RULE_INTERNAL_MENU, ptr_rule->pname) : ptr_rule->pname, _app_getruleicon (ptr_rule), _app_getrulegroup (ptr_rule)); - _r_listview_setitem (hwnd, listview_id, item, 1, ptr_rule->protocol ? _app_getprotoname (ptr_rule->protocol, AF_UNSPEC) : app.LocaleString (IDS_ANY, nullptr)); - _r_listview_setitem (hwnd, listview_id, item, 2, app.LocaleString (ptr_rule->direction == FWP_DIRECTION_MAX ? IDS_ANY : IDS_DIRECTION_1 + ptr_rule->direction, nullptr)); + _r_listview_setitem (hwnd, listview_id, item, 1, ptr_rule->protocol ? _app_getprotoname (ptr_rule->protocol, AF_UNSPEC) : app.LocaleString (IDS_ANY, NULL)); + _r_listview_setitem (hwnd, listview_id, item, 2, app.LocaleString (ptr_rule->direction == FWP_DIRECTION_MAX ? IDS_ANY : IDS_DIRECTION_1 + ptr_rule->direction, NULL)); _r_listview_setitemcheck (hwnd, listview_id, item, ptr_rule->is_enabled); @@ -804,7 +837,7 @@ void _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_ { for (auto &p : ptr_rule->apps) { - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PR_OBJECT ptr_app_object = _app_getappitem (app_hash); if (!ptr_app_object) @@ -814,109 +847,104 @@ void _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_ if (ptr_app) { - const INT app_listview_id = _app_getlistview_id (ptr_app->type); + INT app_listview_id = _app_getlistview_id (ptr_app->type); if (app_listview_id) { - const INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, app_hash); + INT item_pos = _app_getposition (app.GetHWND (), app_listview_id, app_hash); if (item_pos != INVALID_INT) _app_setappiteminfo (hwnd, app_listview_id, item_pos, app_hash, ptr_app); } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } } -void _app_ruleenable (PITEM_RULE ptr_rule, bool is_enable) +VOID _app_ruleenable (PITEM_RULE ptr_rule, BOOLEAN is_enable) { ptr_rule->is_enabled = is_enable; if (ptr_rule->is_readonly && !_r_str_isempty (ptr_rule->pname)) { - const size_t rule_hash = _r_str_hash (ptr_rule->pname); + SIZE_T rule_hash = _r_str_hash (ptr_rule->pname); if (rule_hash) { if (rules_config.find (rule_hash) != rules_config.end ()) { - PR_OBJECT ptr_config_object = _r_obj_reference (rules_config[rule_hash]); + PITEM_RULE_CONFIG ptr_config; + PVOID ptr = rules_config[rule_hash]; - if (ptr_config_object) + if (ptr && (ptr_config = (PITEM_RULE_CONFIG)_r_obj_reference (ptr))) { - PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)ptr_config_object->pdata; + ptr_config->is_enabled = is_enable; - if (ptr_config) - ptr_config->is_enabled = is_enable; - - _r_obj_dereference (ptr_config_object); + _r_obj_dereference (ptr_config); } else { - PITEM_RULE_CONFIG ptr_config = new ITEM_RULE_CONFIG; + PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)_r_obj_allocateex (sizeof (ITEM_RULE_CONFIG), &_app_dereferenceruleconfig); ptr_config->is_enabled = is_enable; _r_str_alloc (&ptr_config->pname, _r_str_length (ptr_rule->pname), ptr_rule->pname); - rules_config[rule_hash] = _r_obj_allocate (ptr_config, &_app_dereferenceruleconfig); + rules_config[rule_hash] = ptr_config; } } else { - PITEM_RULE_CONFIG ptr_config = new ITEM_RULE_CONFIG; + PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)_r_obj_allocateex (sizeof (ITEM_RULE_CONFIG), &_app_dereferenceruleconfig); ptr_config->is_enabled = is_enable; _r_str_alloc (&ptr_config->pname, _r_str_length (ptr_rule->pname), ptr_rule->pname); - rules_config[rule_hash] = _r_obj_allocate (ptr_config, &_app_dereferenceruleconfig); + rules_config[rule_hash] = ptr_config; } } } } -void _app_ruleenable2 (PITEM_RULE ptr_rule, bool is_enable) +VOID _app_ruleenable2 (PITEM_RULE ptr_rule, BOOLEAN is_enable) { ptr_rule->is_enabled = is_enable; if (ptr_rule->is_readonly && !_r_str_isempty (ptr_rule->pname)) { - const size_t rule_hash = _r_str_hash (ptr_rule->pname); + SIZE_T rule_hash = _r_str_hash (ptr_rule->pname); if (rule_hash) { if (rules_config.find (rule_hash) != rules_config.end ()) { - PR_OBJECT ptr_config_object = _r_obj_reference (rules_config[rule_hash]); + PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)_r_obj_reference (rules_config[rule_hash]); - if (ptr_config_object) + if (ptr_config) { - PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)ptr_config_object->pdata; + ptr_config->is_enabled = is_enable; - if (ptr_config) - ptr_config->is_enabled = is_enable; - - _r_obj_dereference (ptr_config_object); + _r_obj_dereference (ptr_config); } } } } } -bool _app_ruleblocklistsetchange (PITEM_RULE ptr_rule, INT new_state) +BOOLEAN _app_ruleblocklistsetchange (PITEM_RULE ptr_rule, INT new_state) { if (new_state == INVALID_INT) - return false; // don't change + return FALSE; // don't change if (new_state == 0 && !ptr_rule->is_enabled) - return false; // not changed + return FALSE; // not changed if (new_state == 1 && ptr_rule->is_enabled && !ptr_rule->is_block) - return false; // not changed + return FALSE; // not changed if (new_state == 2 && ptr_rule->is_enabled && ptr_rule->is_block) - return false; // not changed + return FALSE; // not changed ptr_rule->is_enabled = (new_state != 0); ptr_rule->is_enabled_default = ptr_rule->is_enabled; // set default value for rule @@ -924,55 +952,55 @@ bool _app_ruleblocklistsetchange (PITEM_RULE ptr_rule, INT new_state) if (new_state) ptr_rule->is_block = (new_state != 1); - return true; + return TRUE; } -bool _app_ruleblocklistsetstate (PITEM_RULE ptr_rule, INT spy_state, INT update_state, INT extra_state) +BOOLEAN _app_ruleblocklistsetstate (PITEM_RULE ptr_rule, INT spy_state, INT update_state, INT extra_state) { if (ptr_rule->type != DataRuleBlocklist) - return false; + return FALSE; - if (_r_str_compare (ptr_rule->pname, L"spy_", 4) == 0) + if (_r_str_compare_length (ptr_rule->pname, L"spy_", 4) == 0) return _app_ruleblocklistsetchange (ptr_rule, spy_state); - else if (_r_str_compare (ptr_rule->pname, L"update_", 7) == 0) + else if (_r_str_compare_length (ptr_rule->pname, L"update_", 7) == 0) return _app_ruleblocklistsetchange (ptr_rule, update_state); - else if (_r_str_compare (ptr_rule->pname, L"extra_", 6) == 0) + else if (_r_str_compare_length (ptr_rule->pname, L"extra_", 6) == 0) return _app_ruleblocklistsetchange (ptr_rule, extra_state); // fallback: block rules with other names by default! return _app_ruleblocklistsetchange (ptr_rule, 2); } -void _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extra_state, bool is_instantapply) +VOID _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extra_state, BOOLEAN is_instantapply) { OBJECTS_VEC rules; - const INT listview_id = _app_getlistview_id (DataRuleBlocklist); + INT listview_id = _app_getlistview_id (DataRuleBlocklist); - size_t changes_count = 0; + SIZE_T changes_count = 0; INT index = INVALID_INT; // negative initial value is required for correct array indexing for (auto &p : rules_arr) { index += 1; - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - if (!ptr_rule_object) + if (!p) continue; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (!ptr_rule || ptr_rule->type != DataRuleBlocklist) { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); continue; } if (!_app_ruleblocklistsetstate (ptr_rule, spy_state, update_state, extra_state)) { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); continue; } @@ -981,12 +1009,12 @@ void _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extr if (hwnd) { - const INT item_pos = _app_getposition (hwnd, listview_id, index); + INT item_pos = _app_getposition (hwnd, listview_id, index); if (item_pos != INVALID_INT) { _r_fastlock_acquireshared (&lock_checkbox); - _app_setruleiteminfo (hwnd, listview_id, item_pos, ptr_rule, false); + _app_setruleiteminfo (hwnd, listview_id, item_pos, ptr_rule, FALSE); _r_fastlock_releaseshared (&lock_checkbox); } } @@ -997,7 +1025,7 @@ void _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extr continue; } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } if (changes_count) @@ -1005,32 +1033,35 @@ void _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extr if (hwnd) { if (listview_id == (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT)) - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); } if (is_instantapply) { - _wfp_create4filters (_wfp_getenginehandle (), rules, __LINE__); + HANDLE hengine = _wfp_getenginehandle (); + + if (hengine) + _wfp_create4filters (hengine, rules, __LINE__); + _app_freeobjects_vec (rules); } - _app_profile_save (); // required! + _app_profile_save (NULL); // required! } } -rstring _app_appexpandrules (size_t app_hash, LPCWSTR delimeter) +rstring _app_appexpandrules (SIZE_T app_hash, LPCWSTR delimeter) { rstring result; - for (auto const &p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - - if (!ptr_rule_object) + if (!p) continue; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) @@ -1038,11 +1069,18 @@ rstring _app_appexpandrules (size_t app_hash, LPCWSTR delimeter) if (ptr_rule->is_enabled && ptr_rule->type == DataRuleCustom && ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ()) { if (!_r_str_isempty (ptr_rule->pname)) - result.AppendFormat (L"%s%s", ptr_rule->pname, delimeter); + { + result.Append (ptr_rule->pname); + + if (ptr_rule->is_readonly) + result.Append (SZ_RULE_INTERNAL_MENU); + + result.Append (delimeter); + } } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } if (!result.IsEmpty ()) @@ -1051,19 +1089,19 @@ rstring _app_appexpandrules (size_t app_hash, LPCWSTR delimeter) return result; } -rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, bool is_fordisplay, LPCWSTR delimeter) +rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, BOOLEAN is_fordisplay, LPCWSTR delimeter) { rstring result; if (is_fordisplay && ptr_rule->is_forservices) { - static const rstring svchost_path = _r_path_expand (PATH_SVCHOST); + static rstring svchost_path = _r_path_expand (PATH_SVCHOST); result.AppendFormat (L"%s%s", PROC_SYSTEM_NAME, delimeter); result.AppendFormat (L"%s%s", svchost_path.GetString (), delimeter); } - for (auto const &p : ptr_rule->apps) + for (auto &p : ptr_rule->apps) { PR_OBJECT ptr_app_object = _app_getappitem (p.first); @@ -1096,7 +1134,7 @@ rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, bool is_fordisplay, LPC result.Append (delimeter); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } if (!result.IsEmpty ()) @@ -1105,45 +1143,48 @@ rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, bool is_fordisplay, LPC return result; } -bool _app_isappfound (size_t app_hash) +BOOLEAN _app_isappfound (SIZE_T app_hash) { return apps.find (app_hash) != apps.end (); } -bool _app_isapphaveconnection (size_t app_hash) +BOOLEAN _app_isapphelperfound (SIZE_T app_hash) +{ + return apps_helper.find (app_hash) != apps_helper.end (); +} + +BOOLEAN _app_isapphaveconnection (SIZE_T app_hash) { if (!app_hash) - return false; + return FALSE; for (auto &p : network_map) { - PR_OBJECT ptr_network_object = _r_obj_reference (p.second); + PITEM_NETWORK ptr_network = (PITEM_NETWORK)_r_obj_reference (p.second); - if (!ptr_network_object) + if (!ptr_network) continue; - PITEM_NETWORK ptr_network = (PITEM_NETWORK)ptr_network_object->pdata; - - if (ptr_network && ptr_network->app_hash == app_hash) + if (ptr_network->app_hash == app_hash) { if (ptr_network->is_connection) { - _r_obj_dereference (ptr_network_object); - return true; + _r_obj_dereference (ptr_network); + return TRUE; } } - _r_obj_dereference (ptr_network_object); + _r_obj_dereference (ptr_network); } - return false; + return FALSE; } -bool _app_isapphavedrive (INT letter) +BOOLEAN _app_isapphavedrive (INT letter) { for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -1152,7 +1193,7 @@ bool _app_isapphavedrive (INT letter) if (!ptr_app) { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); continue; } @@ -1162,121 +1203,114 @@ bool _app_isapphavedrive (INT letter) { if (ptr_app->is_enabled || _app_isapphaverule (p.first)) { - _r_obj_dereference (ptr_app_object); - return true; + _r_obj2_dereference (ptr_app_object); + return TRUE; } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - return false; + return FALSE; } -bool _app_isapphaverule (size_t app_hash) +BOOLEAN _app_isapphaverule (SIZE_T app_hash) { if (!app_hash) - return false; + return FALSE; - for (auto& p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - - if (!ptr_rule_object) + if (!p) continue; - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule && ptr_rule->is_enabled && ptr_rule->type == DataRuleCustom && ptr_rule->apps.find (app_hash) != ptr_rule->apps.end ()) { - _r_obj_dereference (ptr_rule_object); - return true; + _r_obj2_dereference (ptr_rule_object); + return TRUE; } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } - return false; + return FALSE; } -bool _app_isappused (const PITEM_APP ptr_app, size_t app_hash) +BOOLEAN _app_isappused (const PITEM_APP ptr_app, SIZE_T app_hash) { if (ptr_app && (ptr_app->is_enabled || ptr_app->is_silent) || _app_isapphaverule (app_hash)) - return true; + return TRUE; - return false; + return FALSE; } -bool _app_isappexists (const PITEM_APP ptr_app) +BOOLEAN _app_isappexists (const PITEM_APP ptr_app) { if (ptr_app->is_undeletable) - return true; + return TRUE; if (ptr_app->is_enabled && ptr_app->is_haveerrors) - return false; + return FALSE; if (ptr_app->type == DataAppDevice || ptr_app->type == DataAppNetwork || ptr_app->type == DataAppPico) - return true; + return TRUE; else if (ptr_app->type == DataAppRegular) return !_r_str_isempty (ptr_app->real_path) && _r_fs_exists (ptr_app->real_path); else if (ptr_app->type == DataAppService || ptr_app->type == DataAppUWP) - return _app_item_get (ptr_app->type, _r_str_hash (ptr_app->original_path), nullptr, nullptr, nullptr, nullptr); + return _app_item_get (ptr_app->type, _r_str_hash (ptr_app->original_path), NULL, NULL, NULL, NULL); - return true; + return TRUE; } -bool _app_isrulehost (LPCWSTR rule) +BOOLEAN _app_isrulehost (LPCWSTR rule) { - PNET_ADDRESS_INFO pni = (PNET_ADDRESS_INFO)_r_mem_allocex (sizeof (NET_ADDRESS_INFO), HEAP_ZERO_MEMORY); + PNET_ADDRESS_INFO pni = (PNET_ADDRESS_INFO)_r_mem_allocatezero (sizeof (NET_ADDRESS_INFO)); - if (!pni) - return false; + USHORT port; + BYTE prefix_length; - USHORT port = 0; - BYTE prefix_length = 0; - - const DWORD types = NET_STRING_NAMED_ADDRESS | NET_STRING_NAMED_SERVICE; - const DWORD rc = ParseNetworkString (rule, types, pni, &port, &prefix_length); + DWORD types = NET_STRING_NAMED_ADDRESS | NET_STRING_NAMED_SERVICE; + DWORD code = ParseNetworkString (rule, types, pni, &port, &prefix_length); _r_mem_free (pni); - return (rc == ERROR_SUCCESS); + return (code == ERROR_SUCCESS); } -bool _app_isruleip (LPCWSTR rule) +BOOLEAN _app_isruleip (LPCWSTR rule) { - PNET_ADDRESS_INFO pni = (PNET_ADDRESS_INFO)_r_mem_allocex (sizeof (NET_ADDRESS_INFO), HEAP_ZERO_MEMORY); + PNET_ADDRESS_INFO pni = (PNET_ADDRESS_INFO)_r_mem_allocatezero (sizeof (NET_ADDRESS_INFO)); - if (!pni) - return false; + USHORT port; + BYTE prefix_length; - USHORT port = 0; - BYTE prefix_length = 0; - - const DWORD types = NET_STRING_IP_ADDRESS | NET_STRING_IP_SERVICE | NET_STRING_IP_NETWORK | NET_STRING_IP_ADDRESS_NO_SCOPE | NET_STRING_IP_SERVICE_NO_SCOPE; - const DWORD rc = ParseNetworkString (rule, types, pni, &port, &prefix_length); + DWORD types = NET_STRING_IP_ADDRESS | NET_STRING_IP_SERVICE | NET_STRING_IP_NETWORK | NET_STRING_IP_ADDRESS_NO_SCOPE | NET_STRING_IP_SERVICE_NO_SCOPE; + DWORD code = ParseNetworkString (rule, types, pni, &port, &prefix_length); _r_mem_free (pni); - return (rc == ERROR_SUCCESS); + return (code == ERROR_SUCCESS); } -bool _app_isruleport (LPCWSTR rule) +BOOLEAN _app_isruleport (LPCWSTR rule) { - for (size_t i = 0; i < _r_str_length (rule); i++) + for (SIZE_T i = 0; i < _r_str_length (rule); i++) { if (iswdigit (rule[i]) == 0 && rule[i] != DIVIDER_RULE_RANGE) - return false; + return FALSE; } - return true; + return TRUE; } -bool _app_isrulevalidchars (LPCWSTR rule) +BOOLEAN _app_isrulevalidchars (LPCWSTR rule) { - const WCHAR valid_chars[] = { + WCHAR valid_chars[] = { L'.', L':', L'[', @@ -1286,17 +1320,17 @@ bool _app_isrulevalidchars (LPCWSTR rule) L'_', }; - for (size_t i = 0; i < _r_str_length (rule); i++) + for (SIZE_T i = 0; i < _r_str_length (rule); i++) { if (iswalnum (rule[i]) == 0) { - bool is_valid = false; + BOOLEAN is_valid = FALSE; for (auto &chr : valid_chars) { if (rule[i] == chr) { - is_valid = true; + is_valid = TRUE; break; } } @@ -1304,14 +1338,14 @@ bool _app_isrulevalidchars (LPCWSTR rule) if (is_valid) continue; - return false; + return FALSE; } } - return true; + return TRUE; } -bool _app_profile_load_check_node (const pugi::xml_node& root, EnumXmlType type, bool is_strict) +BOOLEAN _app_profile_load_check_node (pugi::xml_node& root, ENUM_TYPE_XML type, BOOLEAN is_strict) { if (root) { @@ -1321,10 +1355,10 @@ bool _app_profile_load_check_node (const pugi::xml_node& root, EnumXmlType type, return (root.attribute (L"type").empty () || (root.attribute (L"type").as_int () == type)); } - return false; + return FALSE; } -bool _app_profile_load_check (LPCWSTR path, EnumXmlType type, bool is_strict) +BOOLEAN _app_profile_load_check (LPCWSTR path, ENUM_TYPE_XML type, BOOLEAN is_strict) { pugi::xml_document doc; pugi::xml_parse_result result = doc.load_file (path, PUGIXML_LOAD_FLAGS, PUGIXML_LOAD_ENCODING); @@ -1336,61 +1370,59 @@ bool _app_profile_load_check (LPCWSTR path, EnumXmlType type, bool is_strict) return _app_profile_load_check_node (root, type, is_strict); } - return false; + return FALSE; } -void _app_profile_load_fallback () +VOID _app_profile_load_fallback () { if (!_app_isappfound (config.my_hash)) - _app_addapplication (nullptr, app.GetBinaryPath (), 0, 0, 0, false, true); + _app_addapplication (NULL, app.GetBinaryPath (), 0, 0, 0, FALSE, TRUE); _app_setappinfo (config.my_hash, InfoIsUndeletable, TRUE); // disable deletion for this shit ;) - if (!app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) + if (!app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) { if (!_app_isappfound (config.ntoskrnl_hash)) - _app_addapplication (nullptr, PROC_SYSTEM_NAME, 0, 0, 0, false, false); + _app_addapplication (NULL, PROC_SYSTEM_NAME, 0, 0, 0, FALSE, FALSE); if (!_app_isappfound (config.svchost_hash)) - _app_addapplication (nullptr, _r_path_expand (PATH_SVCHOST), 0, 0, 0, false, false); + _app_addapplication (NULL, _r_path_expand (PATH_SVCHOST), 0, 0, 0, FALSE, FALSE); _app_setappinfo (config.ntoskrnl_hash, InfoIsUndeletable, TRUE); _app_setappinfo (config.svchost_hash, InfoIsUndeletable, TRUE); } - } -void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UINT version) +VOID _app_profile_load_helper (pugi::xml_node& root, ENUM_TYPE_DATA type, UINT version) { - const INT blocklist_spy_state = std::clamp (app.ConfigGet (L"BlocklistSpyState", 2).AsInt (), 0, 2); - const INT blocklist_update_state = std::clamp (app.ConfigGet (L"BlocklistUpdateState", 0).AsInt (), 0, 2); - const INT blocklist_extra_state = std::clamp (app.ConfigGet (L"BlocklistExtraState", 0).AsInt (), 0, 2); + INT blocklist_spy_state = _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistSpyState", 2), 0, 2); + INT blocklist_update_state = _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistUpdateState", 0), 0, 2); + INT blocklist_extra_state = _r_calc_clamp (INT, app.ConfigGetInteger (L"BlocklistExtraState", 0), 0, 2); for (pugi::xml_node item = root.child (L"item"); item; item = item.next_sibling (L"item")) { if (type == DataAppRegular) { - _app_addapplication (nullptr, item.attribute (L"path").as_string (), item.attribute (L"timestamp").as_llong (), item.attribute (L"timer").as_llong (), 0, item.attribute (L"is_silent").as_bool (), item.attribute (L"is_enabled").as_bool ()); + _app_addapplication (NULL, item.attribute (L"path").as_string (), item.attribute (L"timestamp").as_llong (), item.attribute (L"timer").as_llong (), 0, item.attribute (L"is_silent").as_bool (), item.attribute (L"is_enabled").as_bool ()); } else if (type == DataRuleBlocklist || type == DataRuleSystem || type == DataRuleCustom) { PITEM_RULE ptr_rule = new ITEM_RULE; - const size_t rule_hash = _r_str_hash (item.attribute (L"name").as_string ()); + SIZE_T rule_hash = _r_str_hash (item.attribute (L"name").as_string ()); - PR_OBJECT ptr_config_object = nullptr; - PITEM_RULE_CONFIG ptr_config = nullptr; + PITEM_RULE_CONFIG ptr_config = NULL; // allocate required memory { - const rstring attr_name = item.attribute (L"name").as_string (); - const rstring attr_rule_remote = item.attribute (L"rule").as_string (); - const rstring attr_rule_local = item.attribute (L"rule_local").as_string (); + rstring attr_name = item.attribute (L"name").as_string (); + rstring attr_rule_remote = item.attribute (L"rule").as_string (); + rstring attr_rule_local = item.attribute (L"rule_local").as_string (); - const size_t name_length = min (attr_name.GetLength (), RULE_NAME_CCH_MAX); - const size_t rule_remote_length = min (attr_rule_remote.GetLength (), RULE_RULE_CCH_MAX); - const size_t rule_local_length = min (attr_rule_local.GetLength (), RULE_RULE_CCH_MAX); + SIZE_T name_length = min (attr_name.GetLength (), RULE_NAME_CCH_MAX); + SIZE_T rule_remote_length = min (attr_rule_remote.GetLength (), RULE_RULE_CCH_MAX); + SIZE_T rule_local_length = min (attr_rule_local.GetLength (), RULE_RULE_CCH_MAX); _r_str_alloc (&ptr_rule->pname, name_length, attr_name); _r_str_alloc (&ptr_rule->prule_remote, rule_remote_length, attr_rule_remote); @@ -1424,22 +1456,17 @@ void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UI ptr_rule->is_enabled_default = ptr_rule->is_enabled; // set default value for rule // load rules config - const bool is_internal = (type == DataRuleBlocklist || type == DataRuleSystem); + BOOLEAN is_internal = (type == DataRuleBlocklist || type == DataRuleSystem); if (is_internal) { // internal rules if (rules_config.find (rule_hash) != rules_config.end ()) { - ptr_config_object = _r_obj_reference (rules_config[rule_hash]); + ptr_config = (PITEM_RULE_CONFIG)_r_obj_reference (rules_config[rule_hash]); - if (ptr_config_object) - { - ptr_config = (PITEM_RULE_CONFIG)ptr_config_object->pdata; - - if (ptr_config) - ptr_rule->is_enabled = ptr_config->is_enabled; - } + if (ptr_config) + ptr_rule->is_enabled = ptr_config->is_enabled; } } @@ -1456,7 +1483,8 @@ void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UI apps_rule.AppendFormat (L"%s%s", DIVIDER_APP, ptr_config->papps); } - _r_obj_dereference (ptr_config_object); + if (ptr_config) + _r_obj_dereference (ptr_config); if (!apps_rule.IsEmpty ()) { @@ -1470,8 +1498,8 @@ void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UI { _r_str_trim (p, DIVIDER_TRIM); - const rstring app_path = _r_path_expand (p); - size_t app_hash = _r_str_hash (app_path); + rstring app_path = _r_path_expand (p); + SIZE_T app_hash = _r_str_hash (app_path); if (app_hash) { @@ -1479,31 +1507,31 @@ void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UI continue; if (!_app_isappfound (app_hash)) - app_hash = _app_addapplication (nullptr, app_path, 0, 0, 0, false, false); + app_hash = _app_addapplication (NULL, app_path, 0, 0, 0, FALSE, FALSE); if (ptr_rule->type == DataRuleSystem) _app_setappinfo (app_hash, InfoIsUndeletable, TRUE); - ptr_rule->apps[app_hash] = true; + ptr_rule->apps[app_hash] = TRUE; } } } } - rules_arr.push_back (_r_obj_allocate (ptr_rule, &_app_dereferencerule)); + rules_arr.push_back (_r_obj2_allocateex (ptr_rule, &_app_dereferencerule)); } else if (type == DataRulesConfig) { - const rstring rule_name = item.attribute (L"name").as_string (); + rstring rule_name = item.attribute (L"name").as_string (); if (rule_name.IsEmpty ()) continue; - const size_t rule_hash = _r_str_hash (rule_name); + SIZE_T rule_hash = _r_str_hash (rule_name); if (rule_hash && rules_config.find (rule_hash) == rules_config.end ()) { - PITEM_RULE_CONFIG ptr_config = new ITEM_RULE_CONFIG; + PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)_r_obj_allocateex (sizeof (ITEM_RULE_CONFIG), &_app_dereferenceruleconfig); ptr_config->is_enabled = item.attribute (L"is_enabled").as_bool (); @@ -1515,13 +1543,13 @@ void _app_profile_load_helper (const pugi::xml_node& root, EnumDataType type, UI _r_str_alloc (&ptr_config->pname, rule_name.GetLength (), rule_name); _r_str_alloc (&ptr_config->papps, attr_apps.GetLength (), attr_apps); - rules_config[rule_hash] = _r_obj_allocate (ptr_config, &_app_dereferenceruleconfig); + rules_config[rule_hash] = ptr_config; } } } } -void _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptimestamp) +VOID _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptimestamp) { pugi::xml_document doc_original; pugi::xml_document doc_backup; @@ -1535,7 +1563,7 @@ void _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptim if (path_backup) { DWORD size = 0; - const LPVOID pbuffer = _r_loadresource (app.GetHINSTANCE (), path_backup, RT_RCDATA, &size); + LPVOID pbuffer = _r_loadresource (app.GetHINSTANCE (), path_backup, RT_RCDATA, &size); if (pbuffer) load_backup = doc_backup.load_buffer (pbuffer, size, PUGIXML_LOAD_FLAGS, PUGIXML_LOAD_ENCODING); @@ -1556,13 +1584,13 @@ void _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptim // show only syntax, memory and i/o errors... if (!load_original && load_original.status != pugi::status_file_not_found && load_original.status != pugi::status_no_document_element) - app.LogError (L"pugi::load_file", 0, _r_fmt (L"status: %d,offset: %" PR_PTRDIFF L",text: %hs,file: %s", load_original.status, load_original.offset, load_original.description (), path), UID); + app.LogError (L"pugi::load_file", 0, _r_fmt (L"status: %d,offset: %" TEXT (PR_PTRDIFF) L",text: %hs,file: %s", load_original.status, load_original.offset, load_original.description (), path), UID); if (load_original && root) { - if (_app_profile_load_check_node (root, XmlProfileInternalV3, true)) + if (_app_profile_load_check_node (root, XmlProfileInternalV3, TRUE)) { - const UINT version = root.attribute (L"version").as_uint (); + UINT version = root.attribute (L"version").as_uint (); if (ptimestamp) *ptimestamp = root.attribute (L"timestamp").as_llong (); @@ -1580,11 +1608,11 @@ void _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptim } } -void _app_profile_load (HWND hwnd, LPCWSTR path_custom) +VOID _app_profile_load (HWND hwnd, LPCWSTR path_custom) { - const INT current_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - const INT selected_item = (INT)SendDlgItemMessage (hwnd, current_listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); - const INT scroll_pos = GetScrollPos (GetDlgItem (hwnd, current_listview_id), SB_VERT); + INT current_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT selected_item = (INT)SendDlgItemMessage (hwnd, current_listview_id, LVM_GETNEXTITEM, (WPARAM)INVALID_INT, LVNI_SELECTED); + INT scroll_pos = GetScrollPos (GetDlgItem (hwnd, current_listview_id), SB_VERT); // clean listview if (hwnd) @@ -1593,14 +1621,16 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) _r_listview_deleteallitems (hwnd, i); } + _r_fastlock_acquireexclusive (&lock_apply); + // clear apps _app_freeobjects_map (apps, 0); // clear services/uwp apps - _app_freeobjects_map (apps_helper, 0); + _app_freeappshelper_map (apps_helper); // clear rules config - _app_freeobjects_map (rules_config, 0); + _app_freerulesconfig_map (rules_config); // clear rules _app_freeobjects_vec (rules_arr); @@ -1612,11 +1642,13 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) // generate services list _app_generate_services (); + _r_fastlock_releaseexclusive (&lock_apply); + // load profile - if (!_r_str_isempty (path_custom) || _r_fs_exists (config.profile_path) || _r_fs_exists (config.profile_path_backup)) + if (path_custom || _r_fs_exists (config.profile_path) || _r_fs_exists (config.profile_path_backup)) { pugi::xml_document doc; - pugi::xml_parse_result result = doc.load_file (!_r_str_isempty (path_custom) ? path_custom : config.profile_path, PUGIXML_LOAD_FLAGS, PUGIXML_LOAD_ENCODING); + pugi::xml_parse_result result = doc.load_file (path_custom ? path_custom : config.profile_path, PUGIXML_LOAD_FLAGS, PUGIXML_LOAD_ENCODING); // load backup if (!result) @@ -1626,7 +1658,7 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) { // show only syntax, memory and i/o errors... if (result.status != pugi::status_file_not_found && result.status != pugi::status_no_document_element) - app.LogError (L"pugi::load_file", 0, _r_fmt (L"status: %d,offset: %" PR_PTRDIFF L",text: %hs,file: %s", result.status, result.offset, result.description (), !_r_str_isempty (path_custom) ? path_custom : config.profile_path), UID); + app.LogError (L"pugi::load_file", 0, _r_fmt (L"status: %d,offset: %" TEXT (PR_PTRDIFF) L",text: %hs,file: %s", result.status, result.offset, result.description (), !_r_str_isempty (path_custom) ? path_custom : config.profile_path), UID); } else { @@ -1634,15 +1666,16 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) if (root) { - const UINT version = root.attribute (L"version").as_uint (); + UINT version = root.attribute (L"version").as_uint (); - if (_app_profile_load_check_node (root, XmlProfileV3, true)) + if (_app_profile_load_check_node (root, XmlProfileV3, TRUE)) { // load apps (new!) pugi::xml_node root_apps = root.child (L"apps"); if (root_apps) _app_profile_load_helper (root_apps, DataAppRegular, version); + // load rules config (new!) pugi::xml_node root_rules_config = root.child (L"rules_config"); @@ -1662,27 +1695,27 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) _app_profile_load_fallback (); // load internal rules (new!) - if (!app.ConfigGet (L"IsInternalRulesDisabled", false).AsBool ()) + if (!app.ConfigGetBoolean (L"IsInternalRulesDisabled", FALSE)) _app_profile_load_internal (config.profile_internal_path, MAKEINTRESOURCE (IDR_PROFILE_INTERNAL), &config.profile_internal_timestamp); if (hwnd) { - const time_t current_time = _r_unixtime_now (); + time_t current_time = _r_unixtime_now (); // add apps for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; - const size_t app_hash = p.first; + SIZE_T app_hash = p.first; PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (ptr_app) { - const INT listview_id = _app_getlistview_id (ptr_app->type); + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { @@ -1696,35 +1729,29 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) // install timer if (ptr_app->timer) - _app_timer_set (hwnd, ptr_app, (ptr_app->timer - current_time)); + _app_timer_set (hwnd, ptr_app, ptr_app->timer - current_time); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } // add services and store apps for (auto &p : apps_helper) { - PR_OBJECT ptr_item_object = _r_obj_reference (p.second); + PITEM_APP_HELPER ptr_app_item = (PITEM_APP_HELPER)_r_obj_reference (p.second); - if (!ptr_item_object) + if (!ptr_app_item) continue; - PITEM_APP_HELPER ptr_app_item = (PITEM_APP_HELPER)ptr_item_object->pdata; + _app_addapplication (hwnd, ptr_app_item->internal_name, ptr_app_item->timestamp, 0, 0, FALSE, FALSE); - if (ptr_app_item) - _app_addapplication (hwnd, ptr_app_item->internal_name, ptr_app_item->timestamp, 0, 0, false, false); - - _r_obj_dereference (ptr_item_object); + _r_obj_dereference (ptr_app_item); } // add rules - INT item_id = INVALID_INT; - - for (auto &p : rules_arr) + for (SIZE_T i = 0; i < rules_arr.size (); i++) { - item_id += 1; - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = _r_obj2_reference (rules_arr.at (i)); if (!ptr_rule_object) continue; @@ -1733,30 +1760,30 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) if (ptr_rule) { - const INT listview_id = _app_getlistview_id (ptr_rule->type); + INT listview_id = _app_getlistview_id (ptr_rule->type); if (listview_id) { _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_additem (hwnd, listview_id, 0, 0, ptr_rule->pname, _app_getruleicon (ptr_rule), _app_getrulegroup (ptr_rule), item_id); - _app_setruleiteminfo (hwnd, listview_id, 0, ptr_rule, false); + _r_listview_additem (hwnd, listview_id, 0, 0, ptr_rule->pname, _app_getruleicon (ptr_rule), _app_getrulegroup (ptr_rule), i); + _app_setruleiteminfo (hwnd, listview_id, 0, ptr_rule, FALSE); _r_fastlock_releaseshared (&lock_checkbox); } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } if (hwnd && current_listview_id) { - const INT new_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT new_listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); if (new_listview_id) { - _app_listviewsort (hwnd, new_listview_id); + _app_listviewsort (hwnd, new_listview_id, INVALID_INT, FALSE); if (current_listview_id == new_listview_id) _app_showitem (hwnd, current_listview_id, selected_item, scroll_pos); @@ -1764,10 +1791,10 @@ void _app_profile_load (HWND hwnd, LPCWSTR path_custom) } } -void _app_profile_save (LPCWSTR path_custom) +VOID _app_profile_save (LPCWSTR path_custom) { - const time_t current_time = _r_unixtime_now (); - const bool is_backuprequired = _r_str_isempty (path_custom) && app.ConfigGet (L"IsBackupProfile", true).AsBool () && (!_r_fs_exists (config.profile_path_backup) || ((current_time - app.ConfigGet (L"BackupTimestamp", time_t (0)).AsLonglong ()) >= app.ConfigGet (L"BackupPeriod", time_t (_R_SECONDSCLOCK_HOUR (BACKUP_HOURS_PERIOD))).AsLonglong ())); + time_t current_time = _r_unixtime_now (); + BOOLEAN is_backuprequired = !path_custom && app.ConfigGetBoolean (L"IsBackupProfile", TRUE) && (!_r_fs_exists (config.profile_path_backup) || ((current_time - app.ConfigGetLong64 (L"BackupTimestamp", 0)) >= app.ConfigGetLong64 (L"BackupPeriod", _R_SECONDSCLOCK_HOUR (BACKUP_HOURS_PERIOD)))); pugi::xml_document doc; pugi::xml_node root = doc.append_child (L"root"); @@ -1787,7 +1814,7 @@ void _app_profile_save (LPCWSTR path_custom) { for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -1798,15 +1825,13 @@ void _app_profile_save (LPCWSTR path_custom) { if (!ptr_app->original_path) { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); continue; } - const bool is_used = _app_isappused (ptr_app, p.first); - - if (!is_used && (ptr_app->type == DataAppService || ptr_app->type == DataAppUWP)) + if (!_app_isappused (ptr_app, p.first) && (ptr_app->type == DataAppService || ptr_app->type == DataAppUWP)) { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); continue; } @@ -1835,16 +1860,19 @@ void _app_profile_save (LPCWSTR path_custom) } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } // save user rules if (root_rules_custom) { - for (auto& p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + if (!p) + continue; + + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); if (!ptr_rule_object) continue; @@ -1853,7 +1881,7 @@ void _app_profile_save (LPCWSTR path_custom) if (!ptr_rule || ptr_rule->is_readonly || _r_str_isempty (ptr_rule->pname)) { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); continue; } @@ -1885,7 +1913,7 @@ void _app_profile_save (LPCWSTR path_custom) // add apps attribute if (!ptr_rule->apps.empty ()) { - const rstring rule_apps = _app_rulesexpandapps (ptr_rule, false, DIVIDER_APP); + rstring rule_apps = _app_rulesexpandapps (ptr_rule, FALSE, DIVIDER_APP); if (!rule_apps.IsEmpty ()) item.append_attribute (L"apps").set_value (rule_apps); @@ -1898,7 +1926,7 @@ void _app_profile_save (LPCWSTR path_custom) item.append_attribute (L"is_enabled").set_value (ptr_rule->is_enabled); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } @@ -1907,24 +1935,22 @@ void _app_profile_save (LPCWSTR path_custom) { for (auto &p : rules_config) { - PR_OBJECT ptr_config_object = _r_obj_reference (p.second); + PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)_r_obj_reference (p.second); - if (!ptr_config_object) + if (!ptr_config) continue; - PITEM_RULE_CONFIG ptr_config = (PITEM_RULE_CONFIG)ptr_config_object->pdata; - - if (!ptr_config || _r_str_isempty (ptr_config->pname)) + if (_r_str_isempty (ptr_config->pname)) { - _r_obj_dereference (ptr_config_object); + _r_obj_dereference (ptr_config); continue; } rstring rule_apps; - bool is_enabled_default = ptr_config->is_enabled; + BOOLEAN is_enabled_default = ptr_config->is_enabled; { - const size_t rule_hash = _r_str_hash (ptr_config->pname); + SIZE_T rule_hash = _r_str_hash (ptr_config->pname); PR_OBJECT ptr_rule_object = _app_getrulebyhash (rule_hash); if (ptr_rule_object) @@ -1936,10 +1962,10 @@ void _app_profile_save (LPCWSTR path_custom) is_enabled_default = ptr_rule->is_enabled_default; if (ptr_rule->type == DataRuleCustom && !ptr_rule->apps.empty ()) - rule_apps = _app_rulesexpandapps (ptr_rule, false, DIVIDER_APP); + rule_apps = _app_rulesexpandapps (ptr_rule, FALSE, DIVIDER_APP); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } @@ -1948,7 +1974,7 @@ void _app_profile_save (LPCWSTR path_custom) { if (rule_apps.IsEmpty ()) { - _r_obj_dereference (ptr_config_object); + _r_obj_dereference (ptr_config); continue; } } @@ -1965,17 +1991,17 @@ void _app_profile_save (LPCWSTR path_custom) item.append_attribute (L"is_enabled").set_value (ptr_config->is_enabled); } - _r_obj_dereference (ptr_config_object); + _r_obj_dereference (ptr_config); } } - doc.save_file (_r_str_isempty (path_custom) ? config.profile_path : path_custom, L"\t", PUGIXML_SAVE_FLAGS, PUGIXML_SAVE_ENCODING); + doc.save_file (path_custom ? path_custom : config.profile_path, L"\t", PUGIXML_SAVE_FLAGS, PUGIXML_SAVE_ENCODING); // make backup if (is_backuprequired) { doc.save_file (config.profile_path_backup, L"\t", PUGIXML_SAVE_FLAGS, PUGIXML_SAVE_ENCODING); - app.ConfigSet (L"BackupTimestamp", current_time); + app.ConfigSetLong64 (L"BackupTimestamp", current_time); } } } diff --git a/src/profile.hpp b/src/profile.hpp index 359df9ec..dce5fe05 100644 --- a/src/profile.hpp +++ b/src/profile.hpp @@ -3,57 +3,59 @@ #pragma once -LONG_PTR _app_getappinfo (size_t app_hash, EnumInfo info_key); -bool _app_setappinfo (size_t app_hash, EnumInfo info_key, LONG_PTR info_value); +LONG_PTR _app_getappinfo (SIZE_T app_hash, ENUM_INFO_DATA info_key); +BOOLEAN _app_setappinfo (SIZE_T app_hash, ENUM_INFO_DATA info_key, LONG_PTR info_value); -size_t _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t timer, time_t last_notify, bool is_silent, bool is_enabled); +SIZE_T _app_addapplication (HWND hwnd, LPCWSTR path, time_t timestamp, time_t timer, time_t last_notify, BOOLEAN is_silent, BOOLEAN is_enabled); -PR_OBJECT _app_getappitem (size_t app_hash); -PR_OBJECT _app_getrulebyid (size_t idx); -PR_OBJECT _app_getrulebyhash (size_t rule_hash); -PR_OBJECT _app_getnetworkitem (size_t network_hash); -size_t _app_getnetworkapp (size_t network_hash); -PR_OBJECT _app_getlogitem (size_t idx); -size_t _app_getlogapp (size_t idx); -COLORREF _app_getappcolor (INT listview_id, size_t app_hash); +PR_OBJECT _app_getappitem (SIZE_T app_hash); +PITEM_APP_HELPER _app_getapphelperitem (SIZE_T app_hash); +PR_OBJECT _app_getrulebyid (SIZE_T idx); +PR_OBJECT _app_getrulebyhash (SIZE_T rule_hash); +PITEM_NETWORK _app_getnetworkitem (SIZE_T network_hash); +SIZE_T _app_getnetworkapp (SIZE_T network_hash); +PITEM_LOG _app_getlogitem (SIZE_T idx); +SIZE_T _app_getlogapp (SIZE_T idx); +COLORREF _app_getappcolor (INT listview_id, SIZE_T app_hash); -void _app_freeapplication (size_t app_hash); +VOID _app_freeapplication (SIZE_T app_hash); -void _app_getcount (PITEM_STATUS ptr_status); +VOID _app_getcount (PITEM_STATUS ptr_status); -INT _app_getappgroup (size_t app_hash, const PITEM_APP ptr_app); +INT _app_getappgroup (SIZE_T app_hash, const PITEM_APP ptr_app); INT _app_getrulegroup (const PITEM_RULE ptr_rule); INT _app_getruleicon (const PITEM_RULE ptr_rule); -COLORREF _app_getrulecolor (INT listview_id, size_t rule_idx); +COLORREF _app_getrulecolor (INT listview_id, SIZE_T rule_idx); -rstring _app_gettooltip (HWND hwnd, INT listview_id, LPARAM lparam); +rstring _app_gettooltip (HWND hwnd, LPNMLVGETINFOTIP lpnmlv); -void _app_setappiteminfo (HWND hwnd, INT listview_id, INT item, size_t app_hash, PITEM_APP ptr_app); -void _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_rule, bool include_apps); +VOID _app_setappiteminfo (HWND hwnd, INT listview_id, INT item, SIZE_T app_hash, PITEM_APP ptr_app); +VOID _app_setruleiteminfo (HWND hwnd, INT listview_id, INT item, PITEM_RULE ptr_rule, BOOLEAN include_apps); -void _app_ruleenable (PITEM_RULE ptr_rule, bool is_enable); -void _app_ruleenable2 (PITEM_RULE ptr_rule, bool is_enable); +VOID _app_ruleenable (PITEM_RULE ptr_rule, BOOLEAN is_enable); +VOID _app_ruleenable2 (PITEM_RULE ptr_rule, BOOLEAN is_enable); -bool _app_ruleblocklistsetchange (PITEM_RULE ptr_rule, INT new_state); -bool _app_ruleblocklistsetstate (PITEM_RULE ptr_rule, INT spy_state, INT update_state, INT extra_state); -void _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extra_state, bool is_instantapply); +BOOLEAN _app_ruleblocklistsetchange (PITEM_RULE ptr_rule, INT new_state); +BOOLEAN _app_ruleblocklistsetstate (PITEM_RULE ptr_rule, INT spy_state, INT update_state, INT extra_state); +VOID _app_ruleblocklistset (HWND hwnd, INT spy_state, INT update_state, INT extra_state, BOOLEAN is_instantapply); -rstring _app_appexpandrules (size_t app_hash, LPCWSTR delimeter); -rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, bool is_fordisplay, LPCWSTR delimeter); +rstring _app_appexpandrules (SIZE_T app_hash, LPCWSTR delimeter); +rstring _app_rulesexpandapps (const PITEM_RULE ptr_rule, BOOLEAN is_fordisplay, LPCWSTR delimeter); -bool _app_isappfound (size_t app_hash); -bool _app_isapphaveconnection (size_t app_hash); -bool _app_isapphavedrive (INT letter); -bool _app_isapphaverule (size_t app_hash); -bool _app_isappused (const PITEM_APP ptr_app, size_t app_hash); -bool _app_isappexists (const PITEM_APP ptr_app); +BOOLEAN _app_isappfound (SIZE_T app_hash); +BOOLEAN _app_isapphelperfound (SIZE_T app_hash); +BOOLEAN _app_isapphaveconnection (SIZE_T app_hash); +BOOLEAN _app_isapphavedrive (INT letter); +BOOLEAN _app_isapphaverule (SIZE_T app_hash); +BOOLEAN _app_isappused (const PITEM_APP ptr_app, SIZE_T app_hash); +BOOLEAN _app_isappexists (const PITEM_APP ptr_app); -bool _app_isrulehost (LPCWSTR rule); -bool _app_isruleip (LPCWSTR rule); -bool _app_isruleport (LPCWSTR rule); -bool _app_isrulevalidchars (LPCWSTR rule); +BOOLEAN _app_isrulehost (LPCWSTR rule); +BOOLEAN _app_isruleip (LPCWSTR rule); +BOOLEAN _app_isruleport (LPCWSTR rule); +BOOLEAN _app_isrulevalidchars (LPCWSTR rule); -bool _app_profile_load_check (LPCWSTR path, EnumXmlType type, bool is_strict); -void _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptimestamp); -void _app_profile_load (HWND hwnd, LPCWSTR path_custom = nullptr); -void _app_profile_save (LPCWSTR path_custom = nullptr); +BOOLEAN _app_profile_load_check (LPCWSTR path, ENUM_TYPE_XML type, BOOLEAN is_strict); +VOID _app_profile_load_internal (LPCWSTR path, LPCWSTR path_backup, time_t* ptimestamp); +VOID _app_profile_load (HWND hwnd, LPCWSTR path_custom); +VOID _app_profile_save (LPCWSTR path_custom); diff --git a/src/timer.cpp b/src/timer.cpp index 98de0abe..6e2989da 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -3,56 +3,56 @@ #include "global.hpp" -void _app_timer_set (HWND hwnd, PITEM_APP ptr_app, time_t seconds) +VOID _app_timer_set (HWND hwnd, PITEM_APP ptr_app, time_t seconds) { - const size_t app_hash = _r_str_hash (ptr_app->original_path); // note: be carefull (!) + SIZE_T app_hash = _r_str_hash (ptr_app->original_path); // note: be carefull (!) - const INT listview_id = _app_getlistview_id (ptr_app->type); - const INT item_pos = _app_getposition (hwnd, listview_id, app_hash); + INT listview_id = _app_getlistview_id (ptr_app->type); + INT item_pos = _app_getposition (hwnd, listview_id, app_hash); if (seconds <= 0) { - ptr_app->is_enabled = false; - ptr_app->is_haveerrors = false; + ptr_app->is_enabled = FALSE; + ptr_app->is_haveerrors = FALSE; ptr_app->timer = 0; if (_r_fs_isvalidhandle (ptr_app->htimer)) { - DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, nullptr); - ptr_app->htimer = nullptr; + DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, NULL); + ptr_app->htimer = NULL; } } else { - const time_t current_time = _r_unixtime_now (); - bool is_created = false; + time_t current_time = _r_unixtime_now (); + BOOL is_created = FALSE; if (_r_fs_isvalidhandle (ptr_app->htimer)) { - is_created = ChangeTimerQueueTimer (config.htimer, ptr_app->htimer, DWORD (seconds * _R_SECONDSCLOCK_MSEC), 0); + is_created = ChangeTimerQueueTimer (config.htimer, ptr_app->htimer, (DWORD)seconds * _R_SECONDSCLOCK_MSEC, 0); } else { - is_created = CreateTimerQueueTimer (&ptr_app->htimer, config.htimer, &_app_timer_callback, (PVOID)app_hash, DWORD (seconds * _R_SECONDSCLOCK_MSEC), 0, WT_EXECUTEONLYONCE | WT_EXECUTEINTIMERTHREAD); + is_created = CreateTimerQueueTimer (&ptr_app->htimer, config.htimer, &_app_timer_callback, (PVOID)app_hash, (DWORD)seconds * _R_SECONDSCLOCK_MSEC, 0, WT_EXECUTEONLYONCE | WT_EXECUTEINTIMERTHREAD); } if (is_created) { - ptr_app->is_enabled = true; + ptr_app->is_enabled = TRUE; ptr_app->timer = current_time + seconds; } else { - ptr_app->is_enabled = false; - ptr_app->is_haveerrors = false; + ptr_app->is_enabled = FALSE; + ptr_app->is_haveerrors = FALSE; ptr_app->timer = 0; if (_r_fs_isvalidhandle (ptr_app->htimer)) { - DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, nullptr); - ptr_app->htimer = nullptr; + DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, NULL); + ptr_app->htimer = NULL; } } } @@ -61,35 +61,35 @@ void _app_timer_set (HWND hwnd, PITEM_APP ptr_app, time_t seconds) { _r_fastlock_acquireshared (&lock_checkbox); - _r_listview_setitem (hwnd, listview_id, item_pos, 0, nullptr, I_IMAGENONE, _app_getappgroup (app_hash, ptr_app)); + _r_listview_setitem (hwnd, listview_id, item_pos, 0, NULL, I_IMAGENONE, _app_getappgroup (app_hash, ptr_app)); _r_listview_setitemcheck (hwnd, listview_id, item_pos, ptr_app->is_enabled); _r_fastlock_releaseshared (&lock_checkbox); } } -void _app_timer_reset (HWND hwnd, PITEM_APP ptr_app) +VOID _app_timer_reset (HWND hwnd, PITEM_APP ptr_app) { if (!_app_istimeractive (ptr_app)) return; - ptr_app->is_enabled = false; - ptr_app->is_haveerrors = false; + ptr_app->is_enabled = FALSE; + ptr_app->is_haveerrors = FALSE; ptr_app->timer = 0; if (_r_fs_isvalidhandle (ptr_app->htimer)) { - DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, nullptr); - ptr_app->htimer = nullptr; + DeleteTimerQueueTimer (config.htimer, ptr_app->htimer, NULL); + ptr_app->htimer = NULL; } - const size_t app_hash = _r_str_hash (ptr_app->original_path); // note: be carefull (!) - const INT listview_id = _app_getlistview_id (ptr_app->type); + SIZE_T app_hash = _r_str_hash (ptr_app->original_path); // note: be carefull (!) + INT listview_id = _app_getlistview_id (ptr_app->type); if (listview_id) { - const INT item_pos = _app_getposition (hwnd, listview_id, app_hash); + INT item_pos = _app_getposition (hwnd, listview_id, app_hash); if (item_pos != INVALID_INT) { @@ -100,16 +100,16 @@ void _app_timer_reset (HWND hwnd, PITEM_APP ptr_app) } } -bool _app_istimeractive (const PITEM_APP ptr_app) +BOOLEAN _app_istimeractive (const PITEM_APP ptr_app) { return _r_fs_isvalidhandle (ptr_app->htimer) || (ptr_app->timer && (ptr_app->timer > _r_unixtime_now ())); } -bool _app_istimersactive () +BOOLEAN _app_istimersactive () { for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -118,20 +118,20 @@ bool _app_istimersactive () if (ptr_app && _app_istimeractive (ptr_app)) { - _r_obj_dereference (ptr_app_object); - return true; + _r_obj2_dereference (ptr_app_object); + return TRUE; } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - return false; + return FALSE; } -void CALLBACK _app_timer_callback (PVOID lparam, BOOLEAN) +VOID CALLBACK _app_timer_callback (PVOID lpParameter, BOOLEAN TimerOrWaitFired) { - const HWND hwnd = app.GetHWND (); - const size_t app_hash = (size_t)lparam; + HWND hwnd = app.GetHWND (); + SIZE_T app_hash = (SIZE_T)lpParameter; PR_OBJECT ptr_app_object = _app_getappitem (app_hash); @@ -142,7 +142,7 @@ void CALLBACK _app_timer_callback (PVOID lparam, BOOLEAN) if (!ptr_app) { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); return; } @@ -152,17 +152,17 @@ void CALLBACK _app_timer_callback (PVOID lparam, BOOLEAN) _app_timer_reset (hwnd, ptr_app); _wfp_create3filters (_wfp_getenginehandle (), rules, __LINE__); - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); - const INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); + INT listview_id = (INT)_r_tab_getlparam (hwnd, IDC_TAB, INVALID_INT); - _app_listviewsort (hwnd, listview_id); + _app_listviewsort (hwnd, listview_id, INVALID_INT, FALSE); _app_refreshstatus (hwnd, listview_id); - _app_profile_save (); + _app_profile_save (NULL); - _r_listview_redraw (hwnd, listview_id); + _r_listview_redraw (hwnd, listview_id, INVALID_INT); - if (app.ConfigGet (L"IsNotificationsTimer", true).AsBool ()) - _r_tray_popup (hwnd, UID, NIIF_INFO | (app.ConfigGet (L"IsNotificationsSound", true).AsBool () ? 0 : NIIF_NOSOUND), APP_NAME, _r_fmt (app.LocaleString (IDS_STATUS_TIMER_DONE, nullptr), ptr_app->display_name)); + if (app.ConfigGetBoolean (L"IsNotificationsTimer", TRUE)) + _r_tray_popup (hwnd, UID, NIIF_INFO | (app.ConfigGetBoolean (L"IsNotificationsSound", TRUE) ? 0 : NIIF_NOSOUND), APP_NAME, _r_fmt (app.LocaleString (IDS_STATUS_TIMER_DONE, NULL), ptr_app->display_name)); } diff --git a/src/timer.hpp b/src/timer.hpp index 51aadeaa..96f6fd5d 100644 --- a/src/timer.hpp +++ b/src/timer.hpp @@ -3,10 +3,10 @@ #pragma once -void _app_timer_set (HWND hwnd, PITEM_APP ptr_app, time_t seconds); -void _app_timer_reset (HWND hwnd, PITEM_APP ptr_app); +VOID _app_timer_set (HWND hwnd, PITEM_APP ptr_app, time_t seconds); +VOID _app_timer_reset (HWND hwnd, PITEM_APP ptr_app); -bool _app_istimeractive (const PITEM_APP ptr_app); -bool _app_istimersactive (); +BOOLEAN _app_istimeractive (const PITEM_APP ptr_app); +BOOLEAN _app_istimersactive (); -void CALLBACK _app_timer_callback (PVOID lparam, BOOLEAN); +VOID CALLBACK _app_timer_callback (PVOID lpParameter, BOOLEAN TimerOrWaitFired); diff --git a/src/wfp.cpp b/src/wfp.cpp index 3310d935..019b7ab2 100644 --- a/src/wfp.cpp +++ b/src/wfp.cpp @@ -3,21 +3,21 @@ #include "global.hpp" -bool _wfp_isfiltersapplying () +BOOLEAN _wfp_isfiltersapplying () { return _r_fastlock_islocked (&lock_apply) || _r_fastlock_islocked (&lock_transaction); } -EnumInstall _wfp_isproviderinstalled (HANDLE hengine) +ENUM_INSTALL_TYPE _wfp_isproviderinstalled (HANDLE hengine) { // check for persistent provider HKEY hkey; if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\services\\BFE\\Parameters\\Policy\\Persistent\\Provider", 0, KEY_READ, &hkey) == ERROR_SUCCESS) { - static const rstring guidString = _r_str_fromguid (GUID_WfpProvider); + static rstring guidString = _r_str_fromguid ((LPGUID)&GUID_WfpProvider); - if (RegQueryValueEx (hkey, guidString.GetString (), nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS) + if (RegQueryValueEx (hkey, guidString.GetString (), NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { RegCloseKey (hkey); return InstallEnabled; @@ -31,7 +31,7 @@ EnumInstall _wfp_isproviderinstalled (HANDLE hengine) if (FwpmProviderGetByKey (hengine, &GUID_WfpProvider, &ptr_provider) == ERROR_SUCCESS) { - FwpmFreeMemory ((void**)&ptr_provider); + FwpmFreeMemory ((LPVOID*)&ptr_provider); return InstallEnabledTemporary; } @@ -39,16 +39,16 @@ EnumInstall _wfp_isproviderinstalled (HANDLE hengine) return InstallDisabled; } -EnumInstall _wfp_issublayerinstalled (HANDLE hengine) +ENUM_INSTALL_TYPE _wfp_issublayerinstalled (HANDLE hengine) { // check for persistent sublayer HKEY hkey; if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\services\\BFE\\Parameters\\Policy\\Persistent\\SubLayer", 0, KEY_READ, &hkey) == ERROR_SUCCESS) { - static const rstring guidString = _r_str_fromguid (GUID_WfpSublayer); + static rstring guidString = _r_str_fromguid ((LPGUID)&GUID_WfpSublayer); - if (RegQueryValueEx (hkey, guidString.GetString (), nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS) + if (RegQueryValueEx (hkey, guidString.GetString (), NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { RegCloseKey (hkey); return InstallEnabled; @@ -62,7 +62,7 @@ EnumInstall _wfp_issublayerinstalled (HANDLE hengine) if (FwpmSubLayerGetByKey (hengine, &GUID_WfpSublayer, &ptr_sublayer) == ERROR_SUCCESS) { - FwpmFreeMemory ((void**)&ptr_sublayer); + FwpmFreeMemory ((LPVOID*)&ptr_sublayer); return InstallEnabledTemporary; } @@ -70,7 +70,7 @@ EnumInstall _wfp_issublayerinstalled (HANDLE hengine) return InstallDisabled; } -EnumInstall _wfp_isfiltersinstalled () +ENUM_INSTALL_TYPE _wfp_isfiltersinstalled () { HANDLE hengine = _wfp_getenginehandle (); @@ -82,37 +82,55 @@ EnumInstall _wfp_isfiltersinstalled () HANDLE _wfp_getenginehandle () { - if (_r_fs_isvalidhandle (config.hengine)) - return config.hengine; + static HANDLE hengine = NULL; - RtlSecureZeroMemory (&session, sizeof (session)); + HANDLE currentHandle = InterlockedCompareExchangePointer (&hengine, NULL, NULL); - session.displayData.name = APP_NAME; - session.displayData.description = APP_NAME; - - session.txnWaitTimeoutInMSec = TRANSACTION_TIMEOUT; - - DWORD rc = FwpmEngineOpen (nullptr, RPC_C_AUTHN_WINNT, nullptr, &session, &config.hengine); - - if (rc != ERROR_SUCCESS) + if (!currentHandle) { - app.LogError (L"FwpmEngineOpen", rc, nullptr, UID); - config.hengine = nullptr; + FWPM_SESSION session; + RtlSecureZeroMemory (&session, sizeof (session)); + + session.displayData.name = APP_NAME; + session.displayData.description = APP_NAME; + + session.txnWaitTimeoutInMSec = TRANSACTION_TIMEOUT; + + HANDLE newHandle; + DWORD code = FwpmEngineOpen (NULL, RPC_C_AUTHN_WINNT, NULL, &session, &newHandle); + + if (code != ERROR_SUCCESS) + { + app.LogError (L"FwpmEngineOpen", code, NULL, UID); + } + else + { + currentHandle = InterlockedCompareExchangePointer (&hengine, newHandle, NULL); + + if (!currentHandle) + { + currentHandle = newHandle; + } + else + { + FwpmEngineClose (newHandle); + } + } } - return config.hengine; + return currentHandle; } -bool _wfp_initialize (HANDLE hengine, bool is_full) +BOOLEAN _wfp_initialize (HANDLE hengine, BOOLEAN is_full) { - bool result; - DWORD rc; + BOOLEAN result; + DWORD code; _r_fastlock_acquireshared (&lock_transaction); if (hengine) { - result = true; // already initialized + result = TRUE; // already initialized } else { @@ -120,25 +138,25 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) if (!hengine) { - result = false; + result = FALSE; goto DoExit; } - result = true; + result = TRUE; } _app_setsecurityinfoforengine (hengine); // install engine provider and it's sublayer - bool is_providerexist = (_wfp_isproviderinstalled (hengine) != InstallDisabled); - bool is_sublayerexist = (_wfp_issublayerinstalled (hengine) != InstallDisabled); + BOOLEAN is_providerexist = (_wfp_isproviderinstalled (hengine) != InstallDisabled); + BOOLEAN is_sublayerexist = (_wfp_issublayerinstalled (hengine) != InstallDisabled); if (is_full) { if (!is_providerexist || !is_sublayerexist) { - bool is_intransact = _wfp_transact_start (hengine, __LINE__); + BOOLEAN is_intransact = _wfp_transact_start (hengine, __LINE__); if (!is_providerexist) { @@ -153,24 +171,24 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) if (!config.is_filterstemporary) provider.flags = FWPM_PROVIDER_FLAG_PERSISTENT; - rc = FwpmProviderAdd (hengine, &provider, nullptr); + code = FwpmProviderAdd (hengine, &provider, NULL); - if (rc != ERROR_SUCCESS && rc != FWP_E_ALREADY_EXISTS) + if (code != ERROR_SUCCESS && code != FWP_E_ALREADY_EXISTS) { if (is_intransact) { FwpmTransactionAbort (hengine); - is_intransact = false; + is_intransact = FALSE; } - app.LogError (L"FwpmProviderAdd", rc, nullptr, UID); - result = false; + app.LogError (L"FwpmProviderAdd", code, NULL, UID); + result = FALSE; goto DoExit; } else { - is_providerexist = true; + is_providerexist = TRUE; } } @@ -181,38 +199,38 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) sublayer.displayData.name = APP_NAME; sublayer.displayData.description = APP_NAME; - sublayer.providerKey = const_cast(&GUID_WfpProvider); + sublayer.providerKey = (LPGUID)&GUID_WfpProvider; sublayer.subLayerKey = GUID_WfpSublayer; - sublayer.weight = (UINT16)app.ConfigGet (L"SublayerWeight", SUBLAYER_WEIGHT_DEFAULT).AsUint (); // highest weight for UINT16 + sublayer.weight = (UINT16)app.ConfigGetUinteger (L"SublayerWeight", SUBLAYER_WEIGHT_DEFAULT); // highest weight for UINT16 if (!config.is_filterstemporary) sublayer.flags = FWPM_SUBLAYER_FLAG_PERSISTENT; - rc = FwpmSubLayerAdd (hengine, &sublayer, nullptr); + code = FwpmSubLayerAdd (hengine, &sublayer, NULL); - if (rc != ERROR_SUCCESS && rc != FWP_E_ALREADY_EXISTS) + if (code != ERROR_SUCCESS && code != FWP_E_ALREADY_EXISTS) { if (is_intransact) { FwpmTransactionAbort (hengine); - is_intransact = false; + is_intransact = FALSE; } - app.LogError (L"FwpmSubLayerAdd", rc, nullptr, UID); - result = false; + app.LogError (L"FwpmSubLayerAdd", code, NULL, UID); + result = FALSE; goto DoExit; } else { - is_sublayerexist = true; + is_sublayerexist = TRUE; } } if (is_intransact) { if (!_wfp_transact_commit (hengine, __LINE__)) - result = false; + result = FALSE; } } } @@ -220,7 +238,7 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) // set security information if (is_providerexist || is_sublayerexist) { - const bool is_secure = app.ConfigGet (L"IsSecureFilters", true).AsBool (); + BOOLEAN is_secure = app.ConfigGetBoolean (L"IsSecureFilters", TRUE); _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, is_secure); _app_setsecurityinfoforsublayer (hengine, &GUID_WfpSublayer, is_secure); @@ -229,7 +247,7 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) // set engine options if (is_full) { - static const bool is_win8 = _r_sys_validversion (6, 2); + static BOOLEAN is_win8 = _r_sys_validversion (6, 2); FWP_VALUE val; @@ -239,11 +257,11 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) val.type = FWP_UINT32; val.uint32 = 1; - rc = FwpmEngineSetOption (hengine, FWPM_ENGINE_COLLECT_NET_EVENTS, &val); + code = FwpmEngineSetOption (hengine, FWPM_ENGINE_COLLECT_NET_EVENTS, &val); - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { - app.LogError (L"FwpmEngineSetOption", rc, L"FWPM_ENGINE_COLLECT_NET_EVENTS", 0); + app.LogError (L"FwpmEngineSetOption", code, L"FWPM_ENGINE_COLLECT_NET_EVENTS", 0); } else { @@ -257,44 +275,44 @@ bool _wfp_initialize (HANDLE hengine, bool is_full) FWPM_NET_EVENT_KEYWORD_INBOUND_BCAST; // 1903+ - if (_r_sys_validversion (10, 0, 18362)) + if (_r_sys_validversionex (10, 0, 18362, VER_GREATER_EQUAL)) val.uint32 |= FWPM_NET_EVENT_KEYWORD_PORT_SCANNING_DROP; - rc = FwpmEngineSetOption (hengine, FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS, &val); + code = FwpmEngineSetOption (hengine, FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS, &val); - if (rc != ERROR_SUCCESS) - app.LogError (L"FwpmEngineSetOption", rc, L"FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS", 0); + if (code != ERROR_SUCCESS) + app.LogError (L"FwpmEngineSetOption", code, L"FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS", 0); // enables the connection monitoring feature and starts logging creation and deletion events (and notifying any subscribers) - if (app.ConfigGet (L"IsMonitorIPSecConnections", true).AsBool ()) + if (app.ConfigGetBoolean (L"IsMonitorIPSecConnections", TRUE)) { val.type = FWP_UINT32; val.uint32 = 1; - rc = FwpmEngineSetOption (hengine, FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS, &val); + code = FwpmEngineSetOption (hengine, FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS, &val); - if (rc != ERROR_SUCCESS) - app.LogError (L"FwpmEngineSetOption", rc, L"FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS", 0); + if (code != ERROR_SUCCESS) + app.LogError (L"FwpmEngineSetOption", code, L"FWPM_ENGINE_MONITOR_IPSEC_CONNECTIONS", 0); } } - config.is_neteventset = true; + config.is_neteventset = TRUE; _wfp_logsubscribe (hengine); } } // packet queuing (win8+) - if (is_win8 && app.ConfigGet (L"IsPacketQueuingEnabled", true).AsBool ()) + if (is_win8 && app.ConfigGetBoolean (L"IsPacketQueuingEnabled", TRUE)) { // enables inbound or forward packet queuing independently. when enabled, the system is able to evenly distribute cpu load to multiple cpus for site-to-site ipsec tunnel scenarios. val.type = FWP_UINT32; val.uint32 = FWPM_ENGINE_OPTION_PACKET_QUEUE_INBOUND | FWPM_ENGINE_OPTION_PACKET_QUEUE_FORWARD; - rc = FwpmEngineSetOption (hengine, FWPM_ENGINE_PACKET_QUEUING, &val); + code = FwpmEngineSetOption (hengine, FWPM_ENGINE_PACKET_QUEUING, &val); - if (rc != ERROR_SUCCESS) - app.LogError (L"FwpmEngineSetOption", rc, L"FWPM_ENGINE_PACKET_QUEUING", 0); + if (code != ERROR_SUCCESS) + app.LogError (L"FwpmEngineSetOption", code, L"FWPM_ENGINE_PACKET_QUEUING", 0); } } @@ -305,11 +323,11 @@ DoExit: return result; } -void _wfp_uninitialize (HANDLE hengine, bool is_full) +VOID _wfp_uninitialize (HANDLE hengine, BOOLEAN is_full) { _r_fastlock_acquireshared (&lock_transaction); - DWORD rc; + DWORD code; // dropped packets logging (win7+) if (config.is_neteventset) @@ -334,44 +352,42 @@ void _wfp_uninitialize (HANDLE hengine, bool is_full) //val.type = FWP_UINT32; //val.uint32 = 0; - //rc = FwpmEngineSetOption (hengine, FWPM_ENGINE_COLLECT_NET_EVENTS, &val); - - //if (rc == ERROR_SUCCESS) + //code = FwpmEngineSetOption (hengine, FWPM_ENGINE_COLLECT_NET_EVENTS, &val); } if (is_full) { - _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, false); - _app_setsecurityinfoforsublayer (hengine, &GUID_WfpSublayer, false); + _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, FALSE); + _app_setsecurityinfoforsublayer (hengine, &GUID_WfpSublayer, FALSE); - const bool is_intransact = _wfp_transact_start (hengine, __LINE__); + BOOLEAN is_intransact = _wfp_transact_start (hengine, __LINE__); // destroy callouts (deprecated) { - const GUID callouts[] = { - GUID_WfpOutboundCallout4_DEPRECATED, - GUID_WfpOutboundCallout6_DEPRECATED, - GUID_WfpInboundCallout4_DEPRECATED, - GUID_WfpInboundCallout6_DEPRECATED, - GUID_WfpListenCallout4_DEPRECATED, - GUID_WfpListenCallout6_DEPRECATED + LPGUID callouts[] = { + &GUID_WfpOutboundCallout4_DEPRECATED, + &GUID_WfpOutboundCallout6_DEPRECATED, + &GUID_WfpInboundCallout4_DEPRECATED, + &GUID_WfpInboundCallout6_DEPRECATED, + &GUID_WfpListenCallout4_DEPRECATED, + &GUID_WfpListenCallout6_DEPRECATED }; - for (auto callout_id : callouts) - FwpmCalloutDeleteByKey (hengine, &callout_id); + for (auto &callout_id : callouts) + FwpmCalloutDeleteByKey (hengine, callout_id); } // destroy sublayer - rc = FwpmSubLayerDeleteByKey (hengine, &GUID_WfpSublayer); + code = FwpmSubLayerDeleteByKey (hengine, &GUID_WfpSublayer); - if (rc != ERROR_SUCCESS && rc != FWP_E_SUBLAYER_NOT_FOUND) - app.LogError (L"FwpmSubLayerDeleteByKey", rc, nullptr, UID); + if (code != ERROR_SUCCESS && code != FWP_E_SUBLAYER_NOT_FOUND) + app.LogError (L"FwpmSubLayerDeleteByKey", code, NULL, UID); // destroy provider - rc = FwpmProviderDeleteByKey (hengine, &GUID_WfpProvider); + code = FwpmProviderDeleteByKey (hengine, &GUID_WfpProvider); - if (rc != ERROR_SUCCESS && rc != FWP_E_PROVIDER_NOT_FOUND) - app.LogError (L"FwpmProviderDeleteByKey", rc, nullptr, UID); + if (code != ERROR_SUCCESS && code != FWP_E_PROVIDER_NOT_FOUND) + app.LogError (L"FwpmProviderDeleteByKey", code, NULL, UID); if (is_intransact) _wfp_transact_commit (hengine, __LINE__); @@ -380,11 +396,11 @@ void _wfp_uninitialize (HANDLE hengine, bool is_full) _r_fastlock_releaseshared (&lock_transaction); } -void _wfp_installfilters (HANDLE hengine) +VOID _wfp_installfilters (HANDLE hengine) { // set security information - _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, false); - _app_setsecurityinfoforsublayer (hengine, &GUID_WfpSublayer, false); + _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, FALSE); + _app_setsecurityinfoforsublayer (hengine, &GUID_WfpSublayer, FALSE); _wfp_clearfilter_ids (); @@ -392,16 +408,16 @@ void _wfp_installfilters (HANDLE hengine) // dump all filters into array GUIDS_VEC filter_all; - const bool filters_count = _wfp_dumpfilters (hengine, &GUID_WfpProvider, &filter_all); + SIZE_T filters_count = _wfp_dumpfilters (hengine, &GUID_WfpProvider, &filter_all); // restore filters security if (filters_count) { - for (auto filter_id : filter_all) - _app_setsecurityinfoforfilter (hengine, &filter_id, false, __LINE__); + for (auto &filter_id : filter_all) + _app_setsecurityinfoforfilter (hengine, &filter_id, FALSE, __LINE__); } - const bool is_intransact = _wfp_transact_start (hengine, __LINE__); + BOOLEAN is_intransact = _wfp_transact_start (hengine, __LINE__); // destroy all filters if (filters_count) @@ -419,7 +435,7 @@ void _wfp_installfilters (HANDLE hengine) for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -432,7 +448,7 @@ void _wfp_installfilters (HANDLE hengine) } else { - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } } @@ -449,12 +465,12 @@ void _wfp_installfilters (HANDLE hengine) for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); if (!ptr_rule_object) continue; - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule && ptr_rule->is_enabled) { @@ -462,7 +478,7 @@ void _wfp_installfilters (HANDLE hengine) } else { - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } @@ -477,12 +493,15 @@ void _wfp_installfilters (HANDLE hengine) _wfp_transact_commit (hengine, __LINE__); // secure filters - const bool is_secure = app.ConfigGet (L"IsSecureFilters", true).AsBool (); + BOOLEAN is_secure = app.ConfigGetBoolean (L"IsSecureFilters", TRUE); - if (_wfp_dumpfilters (hengine, &GUID_WfpProvider, &filter_all)) + if (is_secure) { - for (auto filter_id : filter_all) - _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, __LINE__); + if (_wfp_dumpfilters (hengine, &GUID_WfpProvider, &filter_all)) + { + for (auto &filter_id : filter_all) + _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, __LINE__); + } } _app_setsecurityinfoforprovider (hengine, &GUID_WfpProvider, is_secure); @@ -491,52 +510,49 @@ void _wfp_installfilters (HANDLE hengine) _r_fastlock_releaseshared (&lock_transaction); } -bool _wfp_transact_start (HANDLE hengine, UINT line) +BOOLEAN _wfp_transact_start (HANDLE hengine, UINT line) { - DWORD rc = FwpmTransactionBegin (hengine, 0); + DWORD code = FwpmTransactionBegin (hengine, 0); //if (rc == FWP_E_TXN_IN_PROGRESS) - // return false; + // return FALSE; - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { - app.LogError (L"FwpmTransactionBegin", rc, _r_fmt (L"#%d", line), UID); - return false; + app.LogError (L"FwpmTransactionBegin", code, _r_fmt (L"#%d", line), UID); + return FALSE; } - return true; + return TRUE; } -bool _wfp_transact_commit (HANDLE hengine, UINT line) +BOOLEAN _wfp_transact_commit (HANDLE hengine, UINT line) { - DWORD rc = FwpmTransactionCommit (hengine); + DWORD code = FwpmTransactionCommit (hengine); - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { FwpmTransactionAbort (hengine); - app.LogError (L"FwpmTransactionCommit", rc, _r_fmt (L"#%d", line), UID); - return false; + app.LogError (L"FwpmTransactionCommit", code, _r_fmt (L"#%d", line), UID); + return FALSE; } - return true; + return TRUE; } -bool _wfp_deletefilter (HANDLE hengine, const LPGUID pfilter_id) +BOOLEAN _wfp_deletefilter (HANDLE hengine, const LPGUID pfilter_id) { - if (!hengine || !pfilter_id) - return false; + DWORD code = FwpmFilterDeleteByKey (hengine, pfilter_id); - const DWORD rc = FwpmFilterDeleteByKey (hengine, pfilter_id); - - if (rc != ERROR_SUCCESS && rc != FWP_E_FILTER_NOT_FOUND) + if (code != ERROR_SUCCESS && code != FWP_E_FILTER_NOT_FOUND) { - app.LogError (L"FwpmFilterDeleteByKey", rc, _r_str_fromguid (*pfilter_id).GetString (), UID); - return false; + app.LogError (L"FwpmFilterDeleteByKey", code, _r_str_fromguid (pfilter_id).GetString (), UID); + return FALSE; } - return true; + return TRUE; } DWORD _wfp_createfilter (HANDLE hengine, LPCWSTR name, FWPM_FILTER_CONDITION* lpcond, UINT32 count, UINT8 weight, const GUID* layer_id, const GUID* callout_id, FWP_ACTION_TYPE action, UINT32 flags, GUIDS_VEC* ptr_filters) @@ -544,10 +560,10 @@ DWORD _wfp_createfilter (HANDLE hengine, LPCWSTR name, FWPM_FILTER_CONDITION* lp FWPM_FILTER filter = {0}; WCHAR fltr_name[128] = {0}; - _r_str_copy (fltr_name, _countof (fltr_name), APP_NAME); + _r_str_copy (fltr_name, RTL_NUMBER_OF (fltr_name), APP_NAME); WCHAR fltr_desc[128] = {0}; - _r_str_copy (fltr_desc, _countof (fltr_desc), _r_str_isempty (name) ? SZ_EMPTY : name); + _r_str_copy (fltr_desc, RTL_NUMBER_OF (fltr_desc), _r_str_isempty (name) ? SZ_EMPTY : name); filter.displayData.name = fltr_name; filter.displayData.description = fltr_desc; @@ -566,7 +582,7 @@ DWORD _wfp_createfilter (HANDLE hengine, LPCWSTR name, FWPM_FILTER_CONDITION* lp if (flags) filter.flags |= flags; - filter.providerKey = (LPGUID)&GUID_WfpProvider; + filter.providerKey = (GUID*)&GUID_WfpProvider; filter.subLayerKey = GUID_WfpSublayer; CoCreateGuid (&filter.filterKey); // set filter guid @@ -588,30 +604,30 @@ DWORD _wfp_createfilter (HANDLE hengine, LPCWSTR name, FWPM_FILTER_CONDITION* lp filter.action.type = action; UINT64 filter_id; - const DWORD rc = FwpmFilterAdd (hengine, &filter, nullptr, &filter_id); + DWORD code = FwpmFilterAdd (hengine, &filter, NULL, &filter_id); - if (rc == ERROR_SUCCESS) + if (code == ERROR_SUCCESS) { if (ptr_filters) ptr_filters->push_back (filter.filterKey); } else { - app.LogError (L"FwpmFilterAdd", rc, fltr_desc, UID); + app.LogError (L"FwpmFilterAdd", code, fltr_desc, UID); } - return rc; + return code; } -void _wfp_clearfilter_ids () +VOID _wfp_clearfilter_ids () { // clear common filters filter_ids.clear (); // clear apps filters - for (auto p : apps) + for (auto &p : apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p.second); + PR_OBJECT ptr_app_object = _r_obj2_reference (p.second); if (!ptr_app_object) continue; @@ -620,17 +636,17 @@ void _wfp_clearfilter_ids () if (ptr_app) { - ptr_app->is_haveerrors = false; + ptr_app->is_haveerrors = FALSE; ptr_app->guids.clear (); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } // clear rules filters - for (auto p : rules_arr) + for (auto &p : rules_arr) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); if (!ptr_rule_object) continue; @@ -639,15 +655,15 @@ void _wfp_clearfilter_ids () if (ptr_rule) { - ptr_rule->is_haveerrors = false; + ptr_rule->is_haveerrors = FALSE; ptr_rule->guids.clear (); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } } -void _wfp_destroyfilters (HANDLE hengine) +VOID _wfp_destroyfilters (HANDLE hengine) { _wfp_clearfilter_ids (); @@ -662,21 +678,21 @@ void _wfp_destroyfilters (HANDLE hengine) _r_fastlock_releaseshared (&lock_transaction); } -bool _wfp_destroyfilters_array (HANDLE hengine, GUIDS_VEC& ptr_filters, UINT line) +BOOLEAN _wfp_destroyfilters_array (HANDLE hengine, GUIDS_VEC& ptr_filters, UINT line) { if (ptr_filters.empty ()) - return false; + return FALSE; - const bool is_enabled = _app_initinterfacestate (app.GetHWND (), false); + BOOLEAN is_enabled = _app_initinterfacestate (app.GetHWND (), FALSE); _r_fastlock_acquireshared (&lock_transaction); - for (auto filter_id : ptr_filters) - _app_setsecurityinfoforfilter (hengine, &filter_id, false, line); + for (auto &filter_id : ptr_filters) + _app_setsecurityinfoforfilter (hengine, &filter_id, FALSE, line); - const bool is_intransact = _wfp_transact_start (hengine, line); + BOOLEAN is_intransact = _wfp_transact_start (hengine, line); - for (auto filter_id : ptr_filters) + for (auto &filter_id : ptr_filters) _wfp_deletefilter (hengine, &filter_id); ptr_filters.clear (); @@ -688,16 +704,16 @@ bool _wfp_destroyfilters_array (HANDLE hengine, GUIDS_VEC& ptr_filters, UINT lin _app_restoreinterfacestate (app.GetHWND (), is_enabled); - return true; + return TRUE; } -bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWSTR rule_remote, LPCWSTR rule_local, UINT8 protocol, ADDRESS_FAMILY af, FWP_DIRECTION dir, UINT8 weight, FWP_ACTION_TYPE action, UINT32 flag, GUIDS_VEC* pmfarr) +BOOLEAN _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, SIZE_T app_hash, LPCWSTR rule_remote, LPCWSTR rule_local, UINT8 protocol, ADDRESS_FAMILY af, FWP_DIRECTION dir, UINT8 weight, FWP_ACTION_TYPE action, UINT32 flag, GUIDS_VEC* pmfarr) { UINT32 count = 0; FWPM_FILTER_CONDITION fwfc[8] = {0}; - FWP_BYTE_BLOB* bPath = nullptr; - FWP_BYTE_BLOB* bSid = nullptr; + FWP_BYTE_BLOB* bPath = NULL; + FWP_BYTE_BLOB* bSid = NULL; FWP_V4_ADDR_AND_MASK addr4 = {0}; FWP_V6_ADDR_AND_MASK addr6 = {0}; @@ -712,8 +728,8 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS addr.paddr6 = &addr6; addr.prange = ⦥ - bool is_remoteaddr_set = false; - bool is_remoteport_set = false; + BOOLEAN is_remoteaddr_set = FALSE; + BOOLEAN is_remoteport_set = FALSE; // set path condition if (app_hash) @@ -722,46 +738,26 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS if (!ptr_app_object) { - app.LogError (TEXT (__FUNCTION__), 0, _r_fmt (L"App \"%" PR_SIZE_T L"\" not found!", app_hash), 0); - return false; + app.LogError (TEXT (__FUNCTION__), 0, _r_fmt (L"App \"%" TEXT (PR_SIZE_T) L"\" not found!", app_hash), 0); + return FALSE; } PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; if (!ptr_app) { - app.LogError (TEXT (__FUNCTION__), 0, _r_fmt (L"App \"%" PR_SIZE_T L"\" not found!", app_hash), 0); - _r_obj_dereference (ptr_app_object); + app.LogError (TEXT (__FUNCTION__), 0, _r_fmt (L"App \"%" TEXT (PR_SIZE_T) L"\" not found!", app_hash), 0); + _r_obj2_dereference (ptr_app_object); - return false; + return FALSE; } - if (ptr_app->type == DataAppUWP) // windows store app (win8+) + + if (ptr_app->type == DataAppService) // windows service { - PVOID pdata = nullptr; + PVOID pdata = NULL; - if (_app_item_get (ptr_app->type, app_hash, nullptr, nullptr, nullptr, &pdata)) - { - fwfc[count].fieldKey = FWPM_CONDITION_ALE_PACKAGE_ID; - fwfc[count].matchType = FWP_MATCH_EQUAL; - fwfc[count].conditionValue.type = FWP_SID; - fwfc[count].conditionValue.sid = (SID*)pdata; - - count += 1; - } - else - { - app.LogError (TEXT (__FUNCTION__), 0, ptr_app->display_name, 0); - _r_obj_dereference (ptr_app_object); - - return false; - } - } - else if (ptr_app->type == DataAppService) // windows service - { - PVOID pdata = nullptr; - - if (_app_item_get (ptr_app->type, app_hash, nullptr, nullptr, nullptr, &pdata) && ByteBlobAlloc (pdata, GetSecurityDescriptorLength (pdata), &bSid)) + if (_app_item_get (ptr_app->type, app_hash, NULL, NULL, NULL, &pdata) && ByteBlobAlloc (pdata, RtlLengthSecurityDescriptor (pdata), &bSid)) { fwfc[count].fieldKey = FWPM_CONDITION_ALE_USER_ID; fwfc[count].matchType = FWP_MATCH_EQUAL; @@ -776,17 +772,38 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS ByteBlobFree (&bSid); app.LogError (TEXT (__FUNCTION__), 0, ptr_app->display_name, 0); - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); - return false; + return FALSE; + } + } + else if (ptr_app->type == DataAppUWP) // windows store app (win8+) + { + PVOID pdata = NULL; + + if (_app_item_get (ptr_app->type, app_hash, NULL, NULL, NULL, &pdata)) + { + fwfc[count].fieldKey = FWPM_CONDITION_ALE_PACKAGE_ID; + fwfc[count].matchType = FWP_MATCH_EQUAL; + fwfc[count].conditionValue.type = FWP_SID; + fwfc[count].conditionValue.sid = (SID*)pdata; + + count += 1; + } + else + { + app.LogError (TEXT (__FUNCTION__), 0, ptr_app->display_name, 0); + _r_obj2_dereference (ptr_app_object); + + return FALSE; } } else { LPCWSTR path = ptr_app->original_path; - const DWORD rc = _FwpmGetAppIdFromFileName1 (path, &bPath, ptr_app->type); + DWORD code = _FwpmGetAppIdFromFileName1 (path, &bPath, ptr_app->type); - if (rc == ERROR_SUCCESS) + if (code == ERROR_SUCCESS) { fwfc[count].fieldKey = FWPM_CONDITION_ALE_APP_ID; fwfc[count].matchType = FWP_MATCH_EQUAL; @@ -801,16 +818,16 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS ByteBlobFree (&bPath); // do not log file not found to error log - if (rc != ERROR_FILE_NOT_FOUND && rc != ERROR_PATH_NOT_FOUND) - app.LogError (L"FwpmGetAppIdFromFileName", rc, path, 0); + if (code != ERROR_FILE_NOT_FOUND && code != ERROR_PATH_NOT_FOUND) + app.LogError (L"FwpmGetAppIdFromFileName", code, path, 0); - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); - return false; + return FALSE; } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } // set ip/port condition @@ -820,7 +837,7 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS rule_local }; - for (size_t i = 0; i < _countof (rules); i++) + for (SIZE_T i = 0; i < RTL_NUMBER_OF (rules); i++) { if (!_r_str_isempty (rules[i])) { @@ -829,17 +846,17 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS ByteBlobFree (&bSid); ByteBlobFree (&bPath); - return false; + return FALSE; } else { if (i == 0) { if (addr.type == DataTypeIp || addr.type == DataTypeHost) - is_remoteaddr_set = true; + is_remoteaddr_set = TRUE; else if (addr.type == DataTypePort) - is_remoteport_set = true; + is_remoteport_set = TRUE; } if (addr.is_range && (addr.type == DataTypeIp || addr.type == DataTypePort)) @@ -859,7 +876,7 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS ByteBlobFree (&bSid); ByteBlobFree (&bPath); - return false; + return FALSE; } } @@ -912,25 +929,25 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS if (rvc.empty ()) { - return false; + return FALSE; } else { for (auto &p : rvc) { - if (!_wfp_createrulefilter (hengine, name, app_hash, p, nullptr, protocol, af, dir, weight, action, flag, pmfarr)) - return false; + if (!_wfp_createrulefilter (hengine, name, app_hash, p, NULL, protocol, af, dir, weight, action, flag, pmfarr)) + return FALSE; } } - return true; + return TRUE; } else { ByteBlobFree (&bSid); ByteBlobFree (&bPath); - return false; + return FALSE; } // set port if available @@ -949,7 +966,7 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS ByteBlobFree (&bSid); ByteBlobFree (&bPath); - return false; + return FALSE; } } } @@ -972,18 +989,18 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS { if (af == AF_INET || af == AF_UNSPEC) { - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, NULL, action, flag, pmfarr); // win7+ - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, NULL, action, flag, pmfarr); } if (af == AF_INET6 || af == AF_UNSPEC) { - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, NULL, action, flag, pmfarr); // win7+ - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, NULL, action, flag, pmfarr); } } @@ -992,36 +1009,36 @@ bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWS { if (af == AF_INET || af == AF_UNSPEC) { - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, action, flag, pmfarr); if (action == FWP_ACTION_BLOCK && (!is_remoteaddr_set && !is_remoteport_set)) - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, nullptr, FWP_ACTION_PERMIT, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, NULL, FWP_ACTION_PERMIT, flag, pmfarr); } if (af == AF_INET6 || af == AF_UNSPEC) { - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, action, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, action, flag, pmfarr); if (action == FWP_ACTION_BLOCK && (!is_remoteaddr_set && !is_remoteport_set)) - _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, nullptr, FWP_ACTION_PERMIT, flag, pmfarr); + _wfp_createfilter (hengine, name, fwfc, count, weight, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, NULL, FWP_ACTION_PERMIT, flag, pmfarr); } } ByteBlobFree (&bSid); ByteBlobFree (&bPath); - return true; + return TRUE; } -bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT line, bool is_intransact) +BOOLEAN _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT line, BOOLEAN is_intransact) { if (ptr_rules.empty ()) - return false; + return FALSE; - const bool is_enabled = _app_initinterfacestate (app.GetHWND (), false); + BOOLEAN is_enabled = _app_initinterfacestate (app.GetHWND (), FALSE); if (!is_intransact && _wfp_isfiltersapplying ()) - is_intransact = true; + is_intransact = TRUE; GUIDS_VEC ids; @@ -1029,12 +1046,12 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin { for (auto &p : ptr_rules) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); if (!ptr_rule_object) continue; - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; if (ptr_rule) { @@ -1045,11 +1062,11 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin } } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } - for (auto filter_id : ids) - _app_setsecurityinfoforfilter (hengine, &filter_id, false, line); + for (auto &filter_id : ids) + _app_setsecurityinfoforfilter (hengine, &filter_id, FALSE, line); _r_fastlock_acquireshared (&lock_transaction); is_intransact = !_wfp_transact_start (hengine, line); @@ -1060,7 +1077,7 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin for (auto &p : ptr_rules) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); if (!ptr_rule_object) continue; @@ -1070,7 +1087,7 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin if (ptr_rule) { GUIDS_VEC guids; - bool is_haveerrors = false; + BOOLEAN is_haveerrors = FALSE; if (ptr_rule->is_enabled) { @@ -1080,12 +1097,12 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin rstringvec rule_local_arr; _r_str_split (ptr_rule->prule_local, INVALID_SIZE_T, DIVIDER_RULE[0], rule_local_arr); - const size_t rules_remote_length = rule_remote_arr.size (); - const size_t rules_local_length = rule_local_arr.size (); + SIZE_T rules_remote_length = rule_remote_arr.size (); + SIZE_T rules_local_length = rule_local_arr.size (); - const size_t count = (std::max) (size_t (1), (std::max) (rules_remote_length, rules_local_length)); + SIZE_T count = max (1, max (rules_remote_length, rules_local_length)); - for (size_t j = 0; j < count; j++) + for (SIZE_T j = 0; j < count; j++) { rstring rule_remote; rstring rule_local; @@ -1108,27 +1125,27 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin if (ptr_rule->is_forservices) { if (!_wfp_createrulefilter (hengine, ptr_rule->pname, config.ntoskrnl_hash, rule_remote, rule_local, ptr_rule->protocol, ptr_rule->af, ptr_rule->direction, ptr_rule->weight, ptr_rule->is_block ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT, 0, &guids)) - is_haveerrors = true; + is_haveerrors = TRUE; if (!_wfp_createrulefilter (hengine, ptr_rule->pname, config.svchost_hash, rule_remote, rule_local, ptr_rule->protocol, ptr_rule->af, ptr_rule->direction, ptr_rule->weight, ptr_rule->is_block ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT, 0, &guids)) - is_haveerrors = true; + is_haveerrors = TRUE; } if (!ptr_rule->apps.empty ()) { - for (auto const &papps : ptr_rule->apps) + for (auto &papps : ptr_rule->apps) { if (ptr_rule->is_forservices && (papps.first == config.ntoskrnl_hash || papps.first == config.svchost_hash)) continue; if (!_wfp_createrulefilter (hengine, ptr_rule->pname, papps.first, rule_remote, rule_local, ptr_rule->protocol, ptr_rule->af, ptr_rule->direction, ptr_rule->weight, ptr_rule->is_block ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT, 0, &guids)) - is_haveerrors = true; + is_haveerrors = TRUE; } } else { if (!_wfp_createrulefilter (hengine, ptr_rule->pname, 0, rule_remote, rule_local, ptr_rule->protocol, ptr_rule->af, ptr_rule->direction, ptr_rule->weight, ptr_rule->is_block ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT, 0, &guids)) - is_haveerrors = true; + is_haveerrors = TRUE; } } } @@ -1139,31 +1156,34 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin ptr_rule->guids = std::move (guids); } - _r_obj_dereference (ptr_rule_object); + _r_obj2_dereference (ptr_rule_object); } if (!is_intransact) { _wfp_transact_commit (hengine, line); - const bool is_secure = app.ConfigGet (L"IsSecureFilters", true).AsBool (); + BOOLEAN is_secure = app.ConfigGetBoolean (L"IsSecureFilters", TRUE); - for (auto &p : ptr_rules) + if (is_secure) { - PR_OBJECT ptr_rule_object = _r_obj_reference (p); - - if (!ptr_rule_object) - continue; - - const PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; - - if (ptr_rule && ptr_rule->is_enabled) + for (auto &p : ptr_rules) { - for (auto filter_id : ptr_rule->guids) - _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); - } + PR_OBJECT ptr_rule_object = _r_obj2_reference (p); - _r_obj_dereference (ptr_rule_object); + if (!ptr_rule_object) + continue; + + PITEM_RULE ptr_rule = (PITEM_RULE)ptr_rule_object->pdata; + + if (ptr_rule && ptr_rule->is_enabled) + { + for (auto &filter_id : ptr_rule->guids) + _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); + } + + _r_obj2_dereference (ptr_rule_object); + } } _r_fastlock_releaseshared (&lock_transaction); @@ -1171,19 +1191,19 @@ bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT lin _app_restoreinterfacestate (app.GetHWND (), is_enabled); - return true; + return TRUE; } -bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line, bool is_intransact) +BOOLEAN _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line, BOOLEAN is_intransact) { if (ptr_apps.empty ()) - return false; + return FALSE; - const bool is_enabled = _app_initinterfacestate (app.GetHWND (), false); - const FWP_ACTION_TYPE action = FWP_ACTION_PERMIT; + BOOLEAN is_enabled = _app_initinterfacestate (app.GetHWND (), FALSE); + FWP_ACTION_TYPE action = FWP_ACTION_PERMIT; if (!is_intransact && _wfp_isfiltersapplying ()) - is_intransact = true; + is_intransact = TRUE; GUIDS_VEC ids; @@ -1191,7 +1211,7 @@ bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line { for (auto &p : ptr_apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p); + PR_OBJECT ptr_app_object = _r_obj2_reference (p); if (!ptr_app_object) continue; @@ -1207,22 +1227,22 @@ bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line } } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } - for (auto filter_id : ids) - _app_setsecurityinfoforfilter (hengine, &filter_id, false, line); + for (auto &filter_id : ids) + _app_setsecurityinfoforfilter (hengine, &filter_id, FALSE, line); _r_fastlock_acquireshared (&lock_transaction); is_intransact = !_wfp_transact_start (hengine, line); } - for (auto filter_id : ids) + for (auto &filter_id : ids) _wfp_deletefilter (hengine, &filter_id); for (auto &p : ptr_apps) { - PR_OBJECT ptr_app_object = _r_obj_reference (p); + PR_OBJECT ptr_app_object = _r_obj2_reference (p); if (!ptr_app_object) continue; @@ -1235,8 +1255,8 @@ bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line if (ptr_app->is_enabled) { - if (!_wfp_createrulefilter (hengine, ptr_app->display_name, _r_str_hash (ptr_app->original_path), nullptr, nullptr, 0, AF_UNSPEC, FWP_DIRECTION_MAX, FILTER_WEIGHT_APPLICATION, action, 0, &guids)) - ptr_app->is_haveerrors = true; + if (!_wfp_createrulefilter (hengine, ptr_app->display_name, _r_str_hash (ptr_app->original_path), NULL, NULL, 0, AF_UNSPEC, FWP_DIRECTION_MAX, FILTER_WEIGHT_APPLICATION, action, 0, &guids)) + ptr_app->is_haveerrors = TRUE; } ptr_app->guids.clear (); @@ -1245,31 +1265,34 @@ bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line ptr_app->guids = std::move (guids); } - _r_obj_dereference (ptr_app_object); + _r_obj2_dereference (ptr_app_object); } if (!is_intransact) { _wfp_transact_commit (hengine, line); - const bool is_secure = app.ConfigGet (L"IsSecureFilters", true).AsBool (); + BOOLEAN is_secure = app.ConfigGetBoolean (L"IsSecureFilters", TRUE); - for (auto &p : ptr_apps) + if (is_secure) { - PR_OBJECT ptr_app_object = _r_obj_reference (p); - - if (!ptr_app_object) - continue; - - PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; - - if (ptr_app) + for (auto &p : ptr_apps) { - for (auto filter_id : ptr_app->guids) - _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); - } + PR_OBJECT ptr_app_object = _r_obj2_reference (p); - _r_obj_dereference (ptr_app_object); + if (!ptr_app_object) + continue; + + PITEM_APP ptr_app = (PITEM_APP)ptr_app_object->pdata; + + if (ptr_app) + { + for (auto &filter_id : ptr_app->guids) + _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); + } + + _r_obj2_dereference (ptr_app_object); + } } _r_fastlock_releaseshared (&lock_transaction); @@ -1277,20 +1300,20 @@ bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line _app_restoreinterfacestate (app.GetHWND (), is_enabled); - return true; + return TRUE; } -bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) +BOOLEAN _wfp_create2filters (HANDLE hengine, UINT line, BOOLEAN is_intransact) { - const bool is_enabled = _app_initinterfacestate (app.GetHWND (), false); + BOOLEAN is_enabled = _app_initinterfacestate (app.GetHWND (), FALSE); if (!is_intransact && _wfp_isfiltersapplying ()) - is_intransact = true; + is_intransact = TRUE; if (!is_intransact) { - for (auto filter_id : filter_ids) - _app_setsecurityinfoforfilter (hengine, &filter_id, false, line); + for (auto &filter_id : filter_ids) + _app_setsecurityinfoforfilter (hengine, &filter_id, FALSE, line); _r_fastlock_acquireshared (&lock_transaction); is_intransact = !_wfp_transact_start (hengine, line); @@ -1307,7 +1330,7 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) FWPM_FILTER_CONDITION fwfc[3] = {0}; // add loopback connections permission - if (app.ConfigGet (L"AllowLoopbackConnections", true).AsBool ()) + if (app.ConfigGetBoolean (L"AllowLoopbackConnections", TRUE)) { // match all loopback (localhost) data fwfc[0].fieldKey = FWPM_CONDITION_FLAGS; @@ -1322,18 +1345,18 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[0].conditionValue.uint32 |= FWP_CONDITION_FLAG_IS_APPCONTAINER_LOOPBACK; } - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // win7+ - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // ipv4/ipv6 loopback LPCWSTR ip_list[] = { @@ -1369,7 +1392,7 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) L"ff00::/8" }; - for (size_t i = 0; i < _countof (ip_list); i++) + for (SIZE_T i = 0; i < RTL_NUMBER_OF (ip_list); i++) { FWP_V4_ADDR_AND_MASK addr4 = {0}; FWP_V6_ADDR_AND_MASK addr6 = {0}; @@ -1390,14 +1413,14 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[1].conditionValue.v4AddrMask = &addr4; fwfc[1].fieldKey = FWPM_CONDITION_IP_REMOTE_ADDRESS; - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // win7+ - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); fwfc[1].fieldKey = FWPM_CONDITION_IP_LOCAL_ADDRESS; - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); } else if (addr.format == NET_ADDRESS_IPV6) { @@ -1405,14 +1428,14 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[1].conditionValue.v6AddrMask = &addr6; fwfc[1].fieldKey = FWPM_CONDITION_IP_REMOTE_ADDRESS; - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // win7+ - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); fwfc[1].fieldKey = FWPM_CONDITION_IP_LOCAL_ADDRESS; - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); - _wfp_createfilter (hengine, nullptr, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, NULL, fwfc, 2, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); } } } @@ -1420,7 +1443,7 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) // firewall service rules // https://msdn.microsoft.com/en-us/library/gg462153.aspx - if (app.ConfigGet (L"AllowIPv6", true).AsBool ()) + if (app.ConfigGetBoolean (L"AllowIPv6", TRUE)) { // allows 6to4 tunneling, which enables ipv6 to run over an ipv4 network fwfc[0].fieldKey = FWPM_CONDITION_IP_PROTOCOL; @@ -1428,7 +1451,7 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[0].conditionValue.type = FWP_UINT8; fwfc[0].conditionValue.uint8 = IPPROTO_IPV6; // ipv6 header - _wfp_createfilter (hengine, L"Allow6to4", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, L"Allow6to4", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // allows icmpv6 router solicitation messages, which are required for the ipv6 stack to work properly fwfc[0].fieldKey = FWPM_CONDITION_ICMP_TYPE; @@ -1436,24 +1459,24 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[0].conditionValue.type = FWP_UINT16; fwfc[0].conditionValue.uint16 = 0x85; - _wfp_createfilter (hengine, L"AllowIcmpV6Type133", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, L"AllowIcmpV6Type133", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // allows icmpv6 router advertise messages, which are required for the ipv6 stack to work properly fwfc[0].conditionValue.uint16 = 0x86; - _wfp_createfilter (hengine, L"AllowIcmpV6Type134", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, L"AllowIcmpV6Type134", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // allows icmpv6 neighbor solicitation messages, which are required for the ipv6 stack to work properly fwfc[0].conditionValue.uint16 = 0x87; - _wfp_createfilter (hengine, L"AllowIcmpV6Type135", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, L"AllowIcmpV6Type135", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); // allows icmpv6 neighbor advertise messages, which are required for the ipv6 stack to work properly fwfc[0].conditionValue.uint16 = 0x88; - _wfp_createfilter (hengine, L"AllowIcmpV6Type136", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, 0, &filter_ids); + _wfp_createfilter (hengine, L"AllowIcmpV6Type136", fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, 0, &filter_ids); } // prevent port scanning using stealth discards and silent drops // https://docs.microsoft.com/ru-ru/windows/desktop/FWP/preventing-port-scanning - if (app.ConfigGet (L"UseStealthMode", true).AsBool ()) + if (app.ConfigGetBoolean (L"UseStealthMode", TRUE)) { // blocks udp port scanners fwfc[0].fieldKey = FWPM_CONDITION_FLAGS; @@ -1470,8 +1493,8 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[1].conditionValue.type = FWP_UINT16; fwfc[1].conditionValue.uint16 = 0x03; // destination unreachable - _wfp_createfilter (hengine, L"BlockIcmpErrorV4", fwfc, 2, FILTER_WEIGHT_HIGHEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, nullptr, FWP_ACTION_BLOCK, 0, &filter_ids); - _wfp_createfilter (hengine, L"BlockIcmpErrorV6", fwfc, 2, FILTER_WEIGHT_HIGHEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, nullptr, FWP_ACTION_BLOCK, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockIcmpErrorV4", fwfc, 2, FILTER_WEIGHT_HIGHEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, NULL, FWP_ACTION_BLOCK, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockIcmpErrorV6", fwfc, 2, FILTER_WEIGHT_HIGHEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, NULL, FWP_ACTION_BLOCK, 0, &filter_ids); // blocks tcp port scanners (exclude loopback) fwfc[0].conditionValue.uint32 |= FWP_CONDITION_FLAG_IS_IPSEC_SECURED; @@ -1482,29 +1505,29 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) // configure outbound layer { - const FWP_ACTION_TYPE action = app.ConfigGet (L"BlockOutboundConnections", true).AsBool () ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT; + FWP_ACTION_TYPE action = app.ConfigGetBoolean (L"BlockOutboundConnections", TRUE) ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT; - _wfp_createfilter (hengine, L"BlockConnectionsV4", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, nullptr, action, 0, &filter_ids); - _wfp_createfilter (hengine, L"BlockConnectionsV6", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, nullptr, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockConnectionsV4", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_CONNECT_V4, NULL, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockConnectionsV6", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_CONNECT_V6, NULL, action, 0, &filter_ids); // win7+ - _wfp_createfilter (hengine, L"BlockConnectionsRedirectionV4", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, nullptr, action, 0, &filter_ids); - _wfp_createfilter (hengine, L"BlockConnectionsRedirectionV6", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, nullptr, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockConnectionsRedirectionV4", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V4, NULL, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockConnectionsRedirectionV6", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_CONNECT_REDIRECT_V6, NULL, action, 0, &filter_ids); } // configure inbound layer { - const FWP_ACTION_TYPE action = (app.ConfigGet (L"UseStealthMode", true).AsBool () || app.ConfigGet (L"BlockInboundConnections", true).AsBool ()) ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT; + FWP_ACTION_TYPE action = (app.ConfigGetBoolean (L"UseStealthMode", TRUE) || app.ConfigGetBoolean (L"BlockInboundConnections", TRUE)) ? FWP_ACTION_BLOCK : FWP_ACTION_PERMIT; - _wfp_createfilter (hengine, L"BlockRecvAcceptConnectionsV4", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, action, 0, &filter_ids); - _wfp_createfilter (hengine, L"BlockRecvAcceptConnectionsV6", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockRecvAcceptConnectionsV4", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, action, 0, &filter_ids); + _wfp_createfilter (hengine, L"BlockRecvAcceptConnectionsV6", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, action, 0, &filter_ids); - //_wfp_createfilter (L"BlockResourceAssignmentV4", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, nullptr, action, 0, &filter_ids); - //_wfp_createfilter (L"BlockResourceAssignmentV6", nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, nullptr, action, 0, &filter_ids); + //_wfp_createfilter (L"BlockResourceAssignmentV4", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4, NULL, action, 0, &filter_ids); + //_wfp_createfilter (L"BlockResourceAssignmentV6", NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V6, NULL, action, 0, &filter_ids); } // install boot-time filters (enforced at boot-time, even before "base filtering engine" service starts) - if (app.ConfigGet (L"InstallBoottimeFilters", true).AsBool () && !config.is_filterstemporary) + if (app.ConfigGetBoolean (L"InstallBoottimeFilters", TRUE) && !config.is_filterstemporary) { fwfc[0].fieldKey = FWPM_CONDITION_FLAGS; fwfc[0].matchType = FWP_MATCH_FLAGS_ALL_SET; @@ -1518,26 +1541,26 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[0].conditionValue.uint32 |= FWP_CONDITION_FLAG_IS_APPCONTAINER_LOOPBACK; } - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_IPFORWARD_V4, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_IPFORWARD_V6, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_IPFORWARD_V4, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_IPFORWARD_V6, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_INBOUND_ICMP_ERROR_V4, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_INBOUND_ICMP_ERROR_V6, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_INBOUND_ICMP_ERROR_V4, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_INBOUND_ICMP_ERROR_V6, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, nullptr, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_HIGHEST_IMPORTANT, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, NULL, FWP_ACTION_PERMIT, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_INBOUND_ICMP_ERROR_V4, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_INBOUND_ICMP_ERROR_V6, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_INBOUND_ICMP_ERROR_V4, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_INBOUND_ICMP_ERROR_V6, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, nullptr, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V4, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, NULL, 0, FILTER_WEIGHT_LOWEST, &FWPM_LAYER_OUTBOUND_ICMP_ERROR_V6, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); // win7+ boot-time features fwfc[0].fieldKey = FWPM_CONDITION_FLAGS; @@ -1545,53 +1568,53 @@ bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact) fwfc[0].conditionValue.type = FWP_UINT32; fwfc[0].conditionValue.uint32 = FWP_CONDITION_FLAG_IS_OUTBOUND_PASS_THRU | FWP_CONDITION_FLAG_IS_INBOUND_PASS_THRU; - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_APPLICATION, &FWPM_LAYER_IPFORWARD_V4, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); - _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_APPLICATION, &FWPM_LAYER_IPFORWARD_V6, nullptr, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_APPLICATION, &FWPM_LAYER_IPFORWARD_V4, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); + _wfp_createfilter (hengine, BOOTTIME_FILTER_NAME, fwfc, 1, FILTER_WEIGHT_APPLICATION, &FWPM_LAYER_IPFORWARD_V6, NULL, FWP_ACTION_BLOCK, FWPM_FILTER_FLAG_BOOTTIME, &filter_ids); } if (!is_intransact) { _wfp_transact_commit (hengine, line); - const bool is_secure = app.ConfigGet (L"IsSecureFilters", true).AsBool (); + BOOLEAN is_secure = app.ConfigGetBoolean (L"IsSecureFilters", TRUE); - for (auto filter_id : filter_ids) - _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); + if (is_secure) + { + for (auto &filter_id : filter_ids) + _app_setsecurityinfoforfilter (hengine, &filter_id, is_secure, line); + } _r_fastlock_releaseshared (&lock_transaction); } _app_restoreinterfacestate (app.GetHWND (), is_enabled); - return true; + return TRUE; } -size_t _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* ptr_filters) +SIZE_T _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* ptr_filters) { - if (!pprovider_id || !ptr_filters) - return 0; - ptr_filters->clear (); UINT32 count = 0; - HANDLE henum = nullptr; + HANDLE henum = NULL; - DWORD rc = FwpmFilterCreateEnumHandle (hengine, nullptr, &henum); + DWORD code = FwpmFilterCreateEnumHandle (hengine, NULL, &henum); - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { - app.LogError (L"FwpmFilterCreateEnumHandle", rc, nullptr, 0); + app.LogError (L"FwpmFilterCreateEnumHandle", code, NULL, 0); return 0; } else { - FWPM_FILTER** matchingFwpFilter = nullptr; + FWPM_FILTER** matchingFwpFilter = NULL; - rc = FwpmFilterEnum (hengine, henum, UINT32_MAX, &matchingFwpFilter, &count); + code = FwpmFilterEnum (hengine, henum, UINT32_MAX, &matchingFwpFilter, &count); - if (rc != ERROR_SUCCESS) + if (code != ERROR_SUCCESS) { - app.LogError (L"FwpmFilterEnum", rc, nullptr, 0); + app.LogError (L"FwpmFilterEnum", code, NULL, 0); } else { @@ -1605,7 +1628,7 @@ size_t _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* pt ptr_filters->push_back (pfilter->filterKey); } - FwpmFreeMemory ((void**)&matchingFwpFilter); + FwpmFreeMemory ((LPVOID*)&matchingFwpFilter); } else { @@ -1620,19 +1643,19 @@ size_t _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* pt return count; } -bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable) +BOOLEAN _mps_firewallapi (PBOOLEAN pis_enabled, PBOOLEAN pis_enable) { if (!pis_enabled && !pis_enable) - return false; + return FALSE; - bool result = false; + BOOLEAN result = FALSE; - INetFwPolicy2* pNetFwPolicy2 = nullptr; - HRESULT hr = CoCreateInstance (__uuidof (NetFwPolicy2), nullptr, CLSCTX_INPROC_SERVER, __uuidof (INetFwPolicy2), (void**)&pNetFwPolicy2); + INetFwPolicy2* pNetFwPolicy2 = NULL; + HRESULT hr = CoCreateInstance (__uuidof (NetFwPolicy2), NULL, CLSCTX_INPROC_SERVER, __uuidof (INetFwPolicy2), (LPVOID*)&pNetFwPolicy2); if (SUCCEEDED (hr) && pNetFwPolicy2) { - const NET_FW_PROFILE_TYPE2 profileTypes[] = { + NET_FW_PROFILE_TYPE2 profileTypes[] = { NET_FW_PROFILE2_DOMAIN, NET_FW_PROFILE2_PRIVATE, NET_FW_PROFILE2_PUBLIC @@ -1640,7 +1663,7 @@ bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable) if (pis_enabled) { - *pis_enabled = false; + *pis_enabled = FALSE; for (auto &type : profileTypes) { @@ -1650,11 +1673,11 @@ bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable) if (SUCCEEDED (hr)) { - result = true; + result = TRUE; if (bIsEnabled == VARIANT_TRUE) { - *pis_enabled = true; + *pis_enabled = TRUE; break; } } @@ -1668,7 +1691,7 @@ bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable) hr = pNetFwPolicy2->put_FirewallEnabled (type, *pis_enable ? VARIANT_TRUE : VARIANT_FALSE); if (SUCCEEDED (hr)) - result = true; + result = TRUE; else app.LogError (L"put_FirewallEnabled", hr, _r_fmt (L"%d", type), 0); @@ -1686,20 +1709,20 @@ bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable) return result; } -void _mps_changeconfig2 (bool is_enable) +VOID _mps_changeconfig2 (BOOLEAN is_enable) { // check settings - bool is_wfenabled = false; - _mps_firewallapi (&is_wfenabled, nullptr); + BOOLEAN is_wfenabled = FALSE; + _mps_firewallapi (&is_wfenabled, NULL); if (is_wfenabled == is_enable) return; - const SC_HANDLE scm = OpenSCManager (nullptr, nullptr, SC_MANAGER_ALL_ACCESS); + SC_HANDLE scm = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS); if (!scm) { - app.LogError (L"OpenSCManager", GetLastError (), nullptr, 0); + app.LogError (L"OpenSCManager", GetLastError (), NULL, 0); } else { @@ -1708,18 +1731,18 @@ void _mps_changeconfig2 (bool is_enable) L"mpsdrv", }; - bool is_started = false; + BOOLEAN is_started = FALSE; for (auto &name : ServiceNames) { - const SC_HANDLE sc = OpenService (scm, name, SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_STOP); + SC_HANDLE sc = OpenService (scm, name, SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_STOP); if (!sc) { - const DWORD rc = GetLastError (); + DWORD code = GetLastError (); - if (rc != ERROR_ACCESS_DENIED) - app.LogError (L"OpenService", rc, name, 0); + if (code != ERROR_ACCESS_DENIED) + app.LogError (L"OpenService", code, name, 0); } else { @@ -1731,7 +1754,7 @@ void _mps_changeconfig2 (bool is_enable) is_started = (status.dwCurrentState == SERVICE_RUNNING); } - if (!ChangeServiceConfig (sc, SERVICE_NO_CHANGE, is_enable ? SERVICE_AUTO_START : SERVICE_DISABLED, SERVICE_NO_CHANGE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr)) + if (!ChangeServiceConfig (sc, SERVICE_NO_CHANGE, is_enable ? SERVICE_AUTO_START : SERVICE_DISABLED, SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) app.LogError (L"ChangeServiceConfig", GetLastError (), name, 0); CloseServiceHandle (sc); @@ -1762,7 +1785,7 @@ void _mps_changeconfig2 (bool is_enable) { if (ssp.dwCurrentState != SERVICE_RUNNING) { - if (!StartService (sc, 0, nullptr)) + if (!StartService (sc, 0, NULL)) app.LogError (L"StartService", GetLastError (), name, 0); } @@ -1774,13 +1797,13 @@ void _mps_changeconfig2 (bool is_enable) _r_sleep (250); } - _mps_firewallapi (nullptr, &is_enable); + _mps_firewallapi (NULL, &is_enable); CloseServiceHandle (scm); } } -DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, EnumDataType type) +DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, ENUM_TYPE_DATA type) { if (_r_str_isempty (path) || !lpblob) return ERROR_BAD_ARGUMENTS; @@ -1798,45 +1821,45 @@ DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, EnumData } else { - DWORD rc = _r_path_ntpathfromdos (path_buff); + DWORD code = _r_path_ntpathfromdos (path_buff); // file is inaccessible or not found, maybe low-level driver preventing file access? // try another way! if ( - rc == ERROR_ACCESS_DENIED || - rc == ERROR_FILE_NOT_FOUND || - rc == ERROR_PATH_NOT_FOUND + code == ERROR_ACCESS_DENIED || + code == ERROR_FILE_NOT_FOUND || + code == ERROR_PATH_NOT_FOUND ) { if (PathIsRelative (path)) { - return rc; + return code; } else { // file path (root) WCHAR path_root[MAX_PATH] = {0}; - _r_str_copy (path_root, _countof (path_root), path); + _r_str_copy (path_root, RTL_NUMBER_OF (path_root), path); PathStripToRoot (path_root); // file path (without root) WCHAR path_noroot[MAX_PATH] = {0}; - _r_str_copy (path_noroot, _countof (path_noroot), PathSkipRoot (path)); + _r_str_copy (path_noroot, RTL_NUMBER_OF (path_noroot), PathSkipRoot (path)); path_buff = path_root; - rc = _r_path_ntpathfromdos (path_buff); + code = _r_path_ntpathfromdos (path_buff); - if (rc != ERROR_SUCCESS) - return rc; + if (code != ERROR_SUCCESS) + return code; path_buff.Append (path_noroot); _r_str_tolower (path_buff.GetBuffer ()); // lower is important! } } - else if (rc != ERROR_SUCCESS) + else if (code != ERROR_SUCCESS) { - return rc; + return code; } if (ByteBlobAlloc ((LPVOID)path_buff.GetString (), (path_buff.GetLength () + 1) * sizeof (WCHAR), lpblob)) @@ -1857,38 +1880,35 @@ DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, EnumData return ERROR_FILE_NOT_FOUND; } -bool ByteBlobAlloc (const PVOID data, size_t length, FWP_BYTE_BLOB** lpblob) +BOOLEAN ByteBlobAlloc (PVOID pdata, SIZE_T length, FWP_BYTE_BLOB** lpblob) { - if (!data || !length || !lpblob) - return false; + if (!pdata || !length || !lpblob) + return FALSE; - FWP_BYTE_BLOB* pblob = (FWP_BYTE_BLOB*)_r_mem_allocex (sizeof (FWP_BYTE_BLOB), HEAP_ZERO_MEMORY); + FWP_BYTE_BLOB* pblob = (FWP_BYTE_BLOB*)_r_mem_allocatezero (sizeof (FWP_BYTE_BLOB)); - if (!pblob) - return false; - - pblob->data = (UINT8*)_r_mem_alloc (length); + pblob->data = (UINT8*)_r_mem_allocatezero (length); pblob->size = (UINT32)length; - RtlCopyMemory (pblob->data, data, length); + RtlCopyMemory (pblob->data, pdata, length); *lpblob = pblob; - return true; + return TRUE; } -void ByteBlobFree (FWP_BYTE_BLOB** lpblob) +VOID ByteBlobFree (FWP_BYTE_BLOB** lpblob) { if (lpblob && *lpblob) { - FWP_BYTE_BLOB* blob = *lpblob; + FWP_BYTE_BLOB* pblob = *lpblob; - if (blob) + if (pblob) { - _r_mem_free (blob->data); - _r_mem_free (blob); + _r_mem_free (pblob->data); + _r_mem_free (pblob); - *lpblob = nullptr; + *lpblob = NULL; } } } diff --git a/src/wfp.hpp b/src/wfp.hpp index 5622c7d8..6a989e94 100644 --- a/src/wfp.hpp +++ b/src/wfp.hpp @@ -3,41 +3,41 @@ #pragma once -EnumInstall _wfp_isproviderinstalled (HANDLE hengine); -EnumInstall _wfp_issublayerinstalled (HANDLE hengine); +ENUM_INSTALL_TYPE _wfp_isproviderinstalled (HANDLE hengine); +ENUM_INSTALL_TYPE _wfp_issublayerinstalled (HANDLE hengine); -bool _wfp_isfiltersapplying (); -EnumInstall _wfp_isfiltersinstalled (); +BOOLEAN _wfp_isfiltersapplying (); +ENUM_INSTALL_TYPE _wfp_isfiltersinstalled (); HANDLE _wfp_getenginehandle (); -bool _wfp_initialize (HANDLE hengine, bool is_full); -void _wfp_uninitialize (HANDLE hengine, bool is_full); +BOOLEAN _wfp_initialize (HANDLE hengine, BOOLEAN is_full); +VOID _wfp_uninitialize (HANDLE hengine, BOOLEAN is_full); -void _wfp_installfilters (HANDLE hengine); +VOID _wfp_installfilters (HANDLE hengine); -bool _wfp_transact_start (HANDLE hengine, UINT line); -bool _wfp_transact_commit (HANDLE hengine, UINT line); +BOOLEAN _wfp_transact_start (HANDLE hengine, UINT line); +BOOLEAN _wfp_transact_commit (HANDLE hengine, UINT line); -bool _wfp_deletefilter (HANDLE hengine, const LPGUID pfilter_id); +BOOLEAN _wfp_deletefilter (HANDLE hengine, const LPGUID pfilter_id); DWORD _wfp_createfilter (HANDLE hengine, LPCWSTR name, FWPM_FILTER_CONDITION* lpcond, UINT32 count, UINT8 weight, const GUID* layer_id, const GUID* callout_id, FWP_ACTION_TYPE action, UINT32 flags, GUIDS_VEC* ptr_filters); -void _wfp_clearfilter_ids (); -void _wfp_destroyfilters (HANDLE hengine); -bool _wfp_destroyfilters_array (HANDLE hengine, GUIDS_VEC& ptr_filters, UINT line); +VOID _wfp_clearfilter_ids (); +VOID _wfp_destroyfilters (HANDLE hengine); +BOOLEAN _wfp_destroyfilters_array (HANDLE hengine, GUIDS_VEC& ptr_filters, UINT line); -bool _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, size_t app_hash, LPCWSTR rule_remote, LPCWSTR rule_local, UINT8 protocol, ADDRESS_FAMILY af, FWP_DIRECTION dir, UINT8 weight, FWP_ACTION_TYPE action, UINT32 flag, GUIDS_VEC* pmfarr); +BOOLEAN _wfp_createrulefilter (HANDLE hengine, LPCWSTR name, SIZE_T app_hash, LPCWSTR rule_remote, LPCWSTR rule_local, UINT8 protocol, ADDRESS_FAMILY af, FWP_DIRECTION dir, UINT8 weight, FWP_ACTION_TYPE action, UINT32 flag, GUIDS_VEC* pmfarr); -bool _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT line, bool is_intransact = false); -bool _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line, bool is_intransact = false); -bool _wfp_create2filters (HANDLE hengine, UINT line, bool is_intransact = false); +BOOLEAN _wfp_create4filters (HANDLE hengine, const OBJECTS_VEC& ptr_rules, UINT line, BOOLEAN is_intransact = FALSE); +BOOLEAN _wfp_create3filters (HANDLE hengine, const OBJECTS_VEC& ptr_apps, UINT line, BOOLEAN is_intransact = FALSE); +BOOLEAN _wfp_create2filters (HANDLE hengine, UINT line, BOOLEAN is_intransact = FALSE); -size_t _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* ptr_filters); +SIZE_T _wfp_dumpfilters (HANDLE hengine, const GUID* pprovider_id, GUIDS_VEC* ptr_filters); -bool _mps_firewallapi (bool* pis_enabled, const bool* pis_enable); -void _mps_changeconfig2 (bool is_enable); +BOOLEAN _mps_firewallapi (PBOOLEAN pis_enabled, const PBOOLEAN pis_enable); +VOID _mps_changeconfig2 (BOOLEAN is_enable); -DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, EnumDataType type); +DWORD _FwpmGetAppIdFromFileName1 (LPCWSTR path, FWP_BYTE_BLOB** lpblob, ENUM_TYPE_DATA type); -bool ByteBlobAlloc (const PVOID data, size_t length, FWP_BYTE_BLOB** lpblob); -void ByteBlobFree (FWP_BYTE_BLOB** lpblob); +BOOLEAN ByteBlobAlloc (const PVOID pdata, SIZE_T length, FWP_BYTE_BLOB** lpblob); +VOID ByteBlobFree (FWP_BYTE_BLOB** lpblob);