Click here to Skip to main content
15,884,388 members
Articles / Desktop Programming / MFC

An Adventure: How to Implement a Firewall-Hook Driver?

Rate me:
Please Sign up or sign in to vote.
4.83/5 (65 votes)
28 Oct 20049 min read 670.6K   11K   194  
Firewall-Hook driver is a completely unknown method to develop simple packet filtering applications. With this article, I want to tell you how this driver works and what you need to do to use it in your applications.
// FirewallAppView.h : interface of the CFirewallAppView class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_FIREWALLAPPVIEW_H__A4ED256D_C173_47E8_8DA9_9C8C20CB2073__INCLUDED_)
#define AFX_FIREWALLAPPVIEW_H__A4ED256D_C173_47E8_8DA9_9C8C20CB2073__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class CFirewallAppView : public CFormView
{
protected: // create from serialization only
	CFirewallAppView();
	DECLARE_DYNCREATE(CFirewallAppView)

public:
	//{{AFX_DATA(CFirewallAppView)
	enum { IDD = IDD_FIREWALLAPP_FORM };
	CListCtrl	m_rules;
	//}}AFX_DATA

// Attributes
public:
	CFirewallAppDoc* GetDocument();

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CFirewallAppView)
	public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	virtual void OnInitialUpdate(); // called first time after construct
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
	//}}AFX_VIRTUAL

// Implementation
public:
	void UpdateList();
	virtual ~CFirewallAppView();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	void AddRuleToList(unsigned long srcIp, 
					   unsigned long srcMask,
					   unsigned short srcPort, 
					   unsigned long dstIp, 
					   unsigned long dstMask,
					   unsigned short dstPort, 
					   unsigned int protocol, 
					   int action);

	//{{AFX_MSG(CFirewallAppView)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

#ifndef _DEBUG  // debug version in FirewallAppView.cpp
inline CFirewallAppDoc* CFirewallAppView::GetDocument()
   { return (CFirewallAppDoc*)m_pDocument; }
#endif

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_FIREWALLAPPVIEW_H__A4ED256D_C173_47E8_8DA9_9C8C20CB2073__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
Chief Technology Officer
Spain Spain
To summarize: learn, learn, learn... and then try to remember something I.... I don't Know what i have to remember...

http://www.olivacorner.com

Comments and Discussions