basic network events view

This commit is contained in:
Pavel Yosifovich
2022-12-11 14:30:18 -05:00
20 changed files with 295 additions and 10 deletions
+8
View File
@@ -1,3 +1,11 @@
# WFP Explorer
GUI tool to view Windows Filtering Platform objects (WIP).
![](https://github.com/zodiacon/WFPExplorer/blob/master/wfpexp1.png)
![](https://github.com/zodiacon/WFPExplorer/blob/master/wfpexp2.png)
![](https://github.com/zodiacon/WFPExplorer/blob/master/wfpexp3.png)
![](https://github.com/zodiacon/WFPExplorer/blob/master/wfpexp4.png)
+1
View File
@@ -87,3 +87,4 @@ struct WFPProviderContextEnumerator : WFPEnumerator<
WFPEnumerator(hEngine, ::FwpmProviderContextCreateEnumHandle, ::FwpmProviderContextDestroyEnumHandle, ::FwpmProviderContextEnum) {
}
};
+12 -1
View File
@@ -16,6 +16,7 @@
#include <ToolbarHelper.h>
#include "AppSettings.h"
#include "HierarchyView.h"
#include "NetEventsView.h"
const int WINDOW_MENU_POSITION = 4;
@@ -53,6 +54,7 @@ LRESULT CMainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/
{ ID_VIEW_PROVIDERS, IDI_PROVIDER },
{ ID_VIEW_FILTERS, IDI_FILTER },
{ ID_VIEW_LAYERS, IDI_LAYERS },
{ ID_VIEW_NETWORKEVENTS, IDI_EVENT },
{ ID_VIEW_SUBLAYERS, IDI_SUBLAYER },
{ ID_VIEW_CALLOUTS, IDI_CALLOUT },
{ ID_VIEW_PROVIDERCONTEXTS, IDI_CONTEXT },
@@ -69,7 +71,7 @@ LRESULT CMainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/
images.Create(16, 16, ILC_COLOR32, 8, 4);
UINT icons[] = {
IDI_SESSION, IDI_FILTER, IDI_PROVIDER, IDI_LAYERS, IDI_SUBLAYER, IDI_CALLOUT,
IDI_CONTEXT, IDI_TREE,
IDI_CONTEXT, IDI_TREE, IDI_EVENT,
};
for (auto icon : icons)
images.AddIcon(AtlLoadIconImage(icon, 0, 16, 16));
@@ -134,6 +136,7 @@ void CMainFrame::InitMenu() {
{ ID_VIEW_PROVIDERCONTEXTS, IDI_CONTEXT },
{ ID_EDIT_PROPERTIES, IDI_PROPERTIES },
{ ID_VIEW_HIERARCHY, IDI_TREE },
{ ID_VIEW_NETWORKEVENTS, IDI_EVENT },
};
for (auto& cmd : cmds) {
if (cmd.icon)
@@ -244,6 +247,14 @@ LRESULT CMainFrame::OnViewLayers(WORD, WORD, HWND, BOOL&) {
return 0;
}
LRESULT CMainFrame::OnViewNetEvents(WORD, WORD, HWND, BOOL&) {
auto view = new CNetEventsView(this, m_Engine);
view->Create(m_view, rcDefault, nullptr, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0);
m_view.AddPage(view->m_hWnd, L"Net Events", 8, view);
return 0;
}
LRESULT CMainFrame::OnViewHierarchy(WORD, WORD, HWND, BOOL&) {
auto view = new CHierarchyView(this, m_Engine);
view->Create(m_view, rcDefault, nullptr, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0);
+2
View File
@@ -29,6 +29,7 @@ public:
COMMAND_ID_HANDLER(ID_VIEW_PROVIDERCONTEXTS, OnViewProviderContexts)
COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar)
COMMAND_ID_HANDLER(ID_VIEW_HIERARCHY, OnViewHierarchy)
COMMAND_ID_HANDLER(ID_VIEW_NETWORKEVENTS, OnViewNetEvents)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
NOTIFY_CODE_HANDLER(TBVN_PAGEACTIVATED, OnPageActivated)
COMMAND_ID_HANDLER(ID_OPTIONS_ALWAYSONTOP, OnAlwaysOnTop)
@@ -72,6 +73,7 @@ private:
LRESULT OnViewProviders(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewProviderContexts(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewLayers(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewNetEvents(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewHierarchy(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewSublayers(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnViewCallouts(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
+98
View File
@@ -0,0 +1,98 @@
#include "pch.h"
#include "NetEventsView.h"
#include <Enumerators.h>
#include <atltime.h>
#include "StringHelper.h"
CNetEventsView::CNetEventsView(IMainFrame* frame, WFPEngine& engine) : CFrameView(frame), m_Engine(engine) {
}
void CNetEventsView::Refresh() {
m_Events = WFPNetEventEnumerator(m_Engine.Handle()).Next<NetEventInfo>(1024);
Sort(m_List);
m_List.SetItemCountEx((int)m_Events.size(), LVSICF_NOSCROLL);
}
CString CNetEventsView::GetColumnText(HWND, int row, int col) {
auto& info = m_Events[row];
auto e = info.Data;
auto flags = e->header.flags;
switch (GetColumnManager(m_List)->GetColumnTag<ColumnType>(col)) {
case ColumnType::Type: return StringHelper::NetEventTypeToString(e->type);
case ColumnType::Time: return CTime(e->header.timeStamp).Format(L"%x %X");
case ColumnType::AddressFamily: return StringHelper::AddressFamilyToString(e->header.addressFamily);
case ColumnType::Protocol: return StringHelper::IpProtocolToString(e->header.ipProtocol);
case ColumnType::ScopeId: return (flags & FWPM_NET_EVENT_FLAG_SCOPE_ID_SET) ? std::to_wstring(e->header.scopeId).c_str() : L"";
case ColumnType::LocalPort: return (flags & FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET) ? std::to_wstring(e->header.localPort).c_str() : L"";
case ColumnType::RemotePort: return (flags & FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET) ? std::to_wstring(e->header.remotePort).c_str() : L"";
case ColumnType::LocalAddress:
if (e->header.ipVersion == FWP_IP_VERSION_NONE || (flags & FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET) == 0)
return L"";
return e->header.ipVersion == FWP_IP_VERSION_V4
? StringHelper::FormatIpv4Address(e->header.localAddrV4)
: StringHelper::FormatIpv6Address(e->header.localAddrV6.byteArray16);
case ColumnType::RemoteAddress:
if (e->header.ipVersion == FWP_IP_VERSION_NONE || (flags & FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET) == 0)
return L"";
return e->header.ipVersion == FWP_IP_VERSION_V4
? StringHelper::FormatIpv4Address(e->header.remoteAddrV4)
: StringHelper::FormatIpv6Address(e->header.remoteAddrV6.byteArray16);
case ColumnType::UserId: return (flags & FWPM_NET_EVENT_FLAG_USER_ID_SET) ? StringHelper::FormatSID(e->header.userId) : CString(L"");
case ColumnType::PackageId: return (flags & FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET) ? StringHelper::FormatSID(e->header.packageSid) : CString(L"");
case ColumnType::AppId:
return (e->header.flags & FWPM_NET_EVENT_FLAG_APP_ID_SET) ?
StringHelper::FormatBinary(e->header.appId.data, min(16, e->header.appId.size)) : CString(L"");
}
return CString();
}
void CNetEventsView::DoSort(SortInfo const* si) {
}
int CNetEventsView::GetRowImage(HWND, int row, int col) const {
return 0;
}
void CNetEventsView::UpdateUI() {
}
LRESULT CNetEventsView::OnCreate(UINT, WPARAM, LPARAM, BOOL&) {
m_hWndClient = m_List.Create(m_hWnd, rcDefault, nullptr,
WS_CHILD | WS_VISIBLE | LVS_OWNERDATA | LVS_REPORT);
m_List.SetExtendedListViewStyle(LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_HEADERDRAGDROP);
CImageList images;
images.Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 1);
images.AddIcon(AtlLoadIconImage(IDI_EVENT, 0, 16, 16));
m_List.SetImageList(images, LVSIL_SMALL);
auto cm = GetColumnManager(m_List);
cm->AddColumn(L"Type", 0, 150, ColumnType::Type);
cm->AddColumn(L"Time", 0, 130, ColumnType::Time);
cm->AddColumn(L"Protocol", 0, 90, ColumnType::Protocol);
cm->AddColumn(L"Address Family", 0, 70, ColumnType::AddressFamily);
cm->AddColumn(L"Local Address", LVCFMT_RIGHT, 170, ColumnType::LocalAddress);
cm->AddColumn(L"Local Port", LVCFMT_RIGHT, 80, ColumnType::LocalPort);
cm->AddColumn(L"Remote Address", LVCFMT_RIGHT, 170, ColumnType::RemoteAddress);
cm->AddColumn(L"Remote Port", LVCFMT_RIGHT, 80, ColumnType::RemotePort);
cm->AddColumn(L"Scope ID", LVCFMT_RIGHT, 80, ColumnType::ScopeId);
cm->AddColumn(L"User ID", 0, 180, ColumnType::UserId);
cm->AddColumn(L"App ID", 0, 180, ColumnType::AppId);
cm->AddColumn(L"Package ID", 0, 180, ColumnType::PackageId);
Refresh();
return 0;
}
LRESULT CNetEventsView::OnRefresh(WORD, WORD, HWND, BOOL&) {
Refresh();
return 0;
}
LRESULT CNetEventsView::OnActivate(UINT, WPARAM, LPARAM, BOOL&) {
UpdateUI();
return 0;
}
+65
View File
@@ -0,0 +1,65 @@
#pragma once
#include <FrameView.h>
#include <VirtualListView.h>
#include "Interfaces.h"
#include <WFPEngine.h>
#include "resource.h"
#include <WFPEnumerator.h>
class WFPEngine;
class CNetEventsView :
public CFrameView<CNetEventsView, IMainFrame>,
public CVirtualListView<CNetEventsView> {
public:
CNetEventsView(IMainFrame* frame, WFPEngine& engine);
void Refresh();
CString GetColumnText(HWND, int row, int col);
void DoSort(SortInfo const* si);
//int GetSaveColumnRange(HWND, int&) const;
int GetRowImage(HWND, int row, int col) const;
//void OnStateChanged(HWND, int from, int to, UINT oldState, UINT newState);
//bool OnDoubleClickList(HWND, int row, int col, POINT const& pt);
BEGIN_MSG_MAP(CNetEventsView)
MESSAGE_HANDLER(WM_ACTIVATE, OnActivate)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
CHAIN_MSG_MAP(CVirtualListView<CNetEventsView>)
CHAIN_MSG_MAP(BaseFrame)
ALT_MSG_MAP(1)
//COMMAND_ID_HANDLER(ID_EDIT_PROPERTIES, OnProperties)
COMMAND_ID_HANDLER(ID_VIEW_REFRESH, OnRefresh)
END_MSG_MAP()
// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
private:
void UpdateUI();
enum class ColumnType {
Time, Type, LocalPort, RemotePort, LocalAddress, RemoteAddress, Flags, EnterpriseId,
IPVersion, Protocol, ScopeId, AppId, UserId, PackageId, PolicyFlags, EffectiveName,
AddressFamily
};
struct NetEventInfo {
FWPM_NET_EVENT* Data;
};
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
LRESULT OnRefresh(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnProperties(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
LRESULT OnActivate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
WFPEngine& m_Engine;
CListViewCtrl m_List;
WFPObjectVector<FWPM_NET_EVENT, NetEventInfo> m_Events;
};
+2 -3
View File
@@ -11,8 +11,7 @@ CProviderContextView::CProviderContextView(IMainFrame* frame, WFPEngine& engine)
CString CProviderContextView::GetProviderName(GUID const* key) const {
CString name;
if (key) {
auto provider = m_Engine.GetProviderByKey(*key);
if (provider)
if (auto provider = m_Engine.GetProviderByKey(*key); provider)
name = StringHelper::ParseMUIString(provider->displayData.name);
if(name.IsEmpty() || name[0] == L'@')
name =StringHelper::GuidToString(*key);
@@ -28,11 +27,11 @@ LRESULT CProviderContextView::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM
auto cm = GetColumnManager(m_List);
cm->AddColumn(L"Context Key", 0, 260, ColumnType::Key);
cm->AddColumn(L"Type", 0, 150, ColumnType::Type);
cm->AddColumn(L"Name", 0, 220, ColumnType::Name);
cm->AddColumn(L"Flags", 0, 100, ColumnType::Flags);
cm->AddColumn(L"Data Size", LVCFMT_RIGHT, 90, ColumnType::DataSize);
cm->AddColumn(L"Context ID", 0, 120, ColumnType::Id);
cm->AddColumn(L"Provider", 0, 240, ColumnType::Provider);
cm->AddColumn(L"Name", 0, 220, ColumnType::Name);
cm->AddColumn(L"Description", 0, 300, ColumnType::Desc);
CImageList images;
+76
View File
@@ -4,6 +4,7 @@
#include <ip2string.h>
#pragma comment(lib, "ntdll")
#pragma comment(lib, "ws2_32")
CString StringHelper::ParseMUIString(PCWSTR input) {
if (input == nullptr)
@@ -182,6 +183,24 @@ CString StringHelper::WFPProviderContextFlagsToString(UINT32 flags) {
return FlagsToString(flags, data);
}
PCWSTR StringHelper::NetEventTypeToString(FWPM_NET_EVENT_TYPE type) {
static PCWSTR types[] = {
L"IKExt Main Mode Failure",
L"IKExt Quick Mode Failure",
L"IKExt Extended Mode Failure",
L"Classify Drop",
L"IPSec Kernel Drop",
L"IPSec DoS Protection Drop",
L"Classify Allow",
L"Capability Drop",
L"Capability Allow",
L"Classify Drop MAC",
L"LPM Packet Arrival",
};
ATLASSERT(type < _countof(types));
return types[type];
}
PCWSTR StringHelper::WFPProviderContextTypeToString(FWPM_PROVIDER_CONTEXT_TYPE type) {
static PCWSTR types[] = {
L"IPSec Keying",
@@ -422,6 +441,63 @@ PCWSTR StringHelper::WFPFieldTypeToString(FWPM_FIELD_TYPE type) {
return L"";
}
CString StringHelper::FormatIpv4Address(UINT32 address) {
WCHAR buf[32];
auto haddr = ntohl(address);
::RtlIpv4AddressToString((in_addr const*)&haddr, buf);
return buf;
}
CString StringHelper::FormatIpv6Address(BYTE const* address) {
WCHAR buf[64];
::RtlIpv6AddressToString((in6_addr const*)address, buf);
return buf;
}
PCWSTR StringHelper::IpProtocolToString(UINT8 protocol) {
switch (protocol) {
case IPPROTO_HOPOPTS: return L"IPv6 HopxHop Opts";
case IPPROTO_ICMP: return L"ICMP";
case IPPROTO_IGMP: return L"IGMP";
case IPPROTO_GGP: return L"GGP";
case IPPROTO_IPV4: return L"IPv4";
case IPPROTO_ST: return L"ST";
case IPPROTO_TCP: return L"TCP";
case IPPROTO_CBT: return L"CBT";
case IPPROTO_EGP: return L"EGP";
case IPPROTO_IGP: return L"IGP";
case IPPROTO_PUP: return L"PUP";
case IPPROTO_UDP: return L"UDP";
case IPPROTO_IDP: return L"IDP";
case IPPROTO_RDP: return L"RDP";
case IPPROTO_IPV6: return L"IPv6";
case IPPROTO_ROUTING: return L"Routing";
case IPPROTO_FRAGMENT: return L"Fragment";
case IPPROTO_ESP: return L"ESP";
case IPPROTO_AH: return L"AH";
case IPPROTO_ICMPV6: L"ICMPv6";
case IPPROTO_NONE: return L"IPv6 NNH";
case IPPROTO_DSTOPTS: return L"IPv6 Dst Opts";
case IPPROTO_ND: return L"ND";
case IPPROTO_ICLFXBM: return L"ICLFXBM";
case IPPROTO_PIM: return L"PIM";
case IPPROTO_PGM: return L"PGM";
case IPPROTO_L2TP: return L"L2TP";
case IPPROTO_SCTP: return L"SCTP";
case IPPROTO_RAW: return L"RAW";
};
return L"(Unknown)";
}
PCWSTR StringHelper::AddressFamilyToString(FWP_AF af) {
switch (af) {
case FWP_AF_INET: return L"INET";
case FWP_AF_INET6: return L"INET6";
case FWP_AF_ETHER: return L"ETHER";
}
return L"(Unknown)";
}
PCWSTR StringHelper::WFPFilterActionTypeToString(FWP_ACTION_TYPE type) {
switch (type) {
case FWP_ACTION_BLOCK: return L"Block";
+5
View File
@@ -12,6 +12,7 @@ struct StringHelper abstract final {
static CString WFPSubLayerFlagsToString(UINT32 flags);
static CString WFPCalloutFlagsToString(DWORD flags);
static CString WFPProviderContextFlagsToString(UINT32 flags);
static PCWSTR NetEventTypeToString(FWPM_NET_EVENT_TYPE type);
static PCWSTR WFPProviderContextTypeToString(FWPM_PROVIDER_CONTEXT_TYPE type);
static PCWSTR WFPFilterActionTypeToString(FWP_ACTION_TYPE type);
static PCWSTR WFPConditionMatchToString(FWP_MATCH_TYPE type);
@@ -20,6 +21,10 @@ struct StringHelper abstract final {
static CString FormatBinary(BYTE const* buffer, ULONG size, int lineSize = 16);
static CString FormatSID(PSID const sid);
static PCWSTR WFPFieldTypeToString(FWPM_FIELD_TYPE type);
static CString FormatIpv4Address(UINT32 address);
static CString FormatIpv6Address(BYTE const* address);
static PCWSTR IpProtocolToString(UINT8 protocol);
static PCWSTR AddressFamilyToString(FWP_AF af);
template<typename TFlags, typename TValue>
static CString FlagsToString(TValue value, TFlags const& data) {
+6
View File
@@ -78,6 +78,7 @@ BEGIN
MENUITEM "Subla&yers", ID_VIEW_SUBLAYERS
MENUITEM "&Callouts", ID_VIEW_CALLOUTS
MENUITEM "Provider Conte&xts", ID_VIEW_PROVIDERCONTEXTS
MENUITEM "&Network Events", ID_VIEW_NETWORKEVENTS
MENUITEM SEPARATOR
MENUITEM "&Refresh", ID_VIEW_REFRESH
MENUITEM SEPARATOR
@@ -85,6 +86,9 @@ BEGIN
END
POPUP "&Options"
BEGIN
MENUITEM "&Append Network Events", ID_OPTIONS_APPENDNETWORKEVENTS
MENUITEM "&Resolve Network Addresses", ID_OPTIONS_RESOLVENETWORKADDRESSES
MENUITEM SEPARATOR
MENUITEM "&Always On Top", ID_OPTIONS_ALWAYSONTOP
MENUITEM "&Dark Mode", ID_OPTIONS_DARKMODE
MENUITEM "&Font...", ID_OPTIONS_FONT
@@ -168,6 +172,8 @@ IDI_FIELD ICON "res\\field.ico"
IDI_TREE ICON "res\\tree.ico"
IDI_EVENT ICON "res\\event.ico"
/////////////////////////////////////////////////////////////////////////////
//
+3
View File
@@ -238,6 +238,7 @@
<ClCompile Include="LayerGeneralPage.cpp" />
<ClCompile Include="LayersView.cpp" />
<ClCompile Include="MainFrm.cpp" />
<ClCompile Include="NetEventsView.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
@@ -266,6 +267,7 @@
<ClInclude Include="LayerGeneralPage.h" />
<ClInclude Include="LayersView.h" />
<ClInclude Include="MainFrm.h" />
<ClInclude Include="NetEventsView.h" />
<ClInclude Include="ProcessHelper.h" />
<ClInclude Include="ProviderContextView.h" />
<ClInclude Include="ProvidersView.h" />
@@ -287,6 +289,7 @@
<Image Include="res\Cut.ico" />
<Image Include="res\Delete.ico" />
<Image Include="res\engine.ico" />
<Image Include="res\event.ico" />
<Image Include="res\field.ico" />
<Image Include="res\filter-disabled.ico" />
<Image Include="res\Filter.ico" />
+9
View File
@@ -90,6 +90,9 @@
<ClCompile Include="HierarchyView.cpp">
<Filter>Views</Filter>
</ClCompile>
<ClCompile Include="NetEventsView.cpp">
<Filter>Views</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h">
@@ -155,6 +158,9 @@
<ClInclude Include="HierarchyView.h">
<Filter>Views</Filter>
</ClInclude>
<ClInclude Include="NetEventsView.h">
<Filter>Views</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="WFPExplorer.rc">
@@ -240,6 +246,9 @@
<Image Include="res\tree.ico">
<Filter>Resource Files\Icons</Filter>
</Image>
<Image Include="res\event.ico">
<Filter>Resource Files\Icons</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
+1 -1
View File
@@ -85,7 +85,7 @@ int WFPHelper::ShowFilterProperties(WFPEngine& engine, FWPM_FILTER* filter) {
return (int)sheet.DoModal();
}
int WFPHelper::ShowSublayerProperties(WFPEngine& engine, WFPSubLayerInfo& layer) {
int WFPHelper::ShowSublayerProperties(WFPEngine& engine, FWPM_SUBLAYER* sublayer) {
return 0;
}
+1 -3
View File
@@ -2,8 +2,6 @@
class WFPEngine;
struct WFPSubLayerInfo;
struct WFPHelper abstract final {
static CString GetProviderName(WFPEngine const& engine, GUID const& key);
static CString GetFilterName(WFPEngine const& engine, GUID const& key);
@@ -11,7 +9,7 @@ struct WFPHelper abstract final {
static CString GetSublayerName(WFPEngine const& engine, GUID const& key);
static int ShowLayerProperties(WFPEngine& engine, FWPM_LAYER* layer);
static int ShowFilterProperties(WFPEngine& engine, FWPM_FILTER* filter);
static int ShowSublayerProperties(WFPEngine& engine, WFPSubLayerInfo& sublayer);
static int ShowSublayerProperties(WFPEngine& engine, FWPM_SUBLAYER* sublayer);
static int ShowProviderProperties(WFPEngine& engine, FWPM_PROVIDER* provider);
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

+6 -2
View File
@@ -37,6 +37,7 @@
#define IDI_TREE 233
#define IDR_MENU1 234
#define IDR_CONTEXT 234
#define IDI_EVENT 235
#define IDC_VERSION 1000
#define IDC_COPYRIGHT 1001
#define IDC_KEY 1001
@@ -74,13 +75,16 @@
#define ID_VIEW_PROVIDERS 32784
#define ID_VIEW_PROVIDERCONTEXTS 32785
#define ID_EDIT_PROPERTIES 32786
#define ID_VIEW_NETWORKEVENTS 32787
#define ID_OPTIONS_APPENDNETWORKEVENTS 32788
#define ID_OPTIONS_RESOLVENETWORKADDRESSES 32789
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 235
#define _APS_NEXT_COMMAND_VALUE 32787
#define _APS_NEXT_RESOURCE_VALUE 236
#define _APS_NEXT_COMMAND_VALUE 32790
#define _APS_NEXT_CONTROL_VALUE 1019
#define _APS_NEXT_SYMED_VALUE 101
#endif
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB