www.pudn.com > 18900_netwall_lite.rar > comm.h


#ifndef _COMM_H_ 
#define _COMM_H_ 
 
#if defined(_WINDOWS) || defined (_CONSOLE) 
#include    // Compiling Win32 Applications Or DLL's 
 
#include "W32NDIS.H" 
#endif // _WINDOWS 
 
 
// 
// Note 
// ---- 
// This file contains constants and definitions that are shared between 
// the kernel mode driver and Win32 components. 
// 
///////////////////////////////////////////////////////////////////////////// 
//// NWIP Win32 API Version Information 
// 
// Make sure that this is coordinated with information in the VERSION 
// resource. 
// 
#define NETWALL_API_VERSION             (ULONG)0x01000100 
 
//////////////////////////////////////////////////////////////////////////// 
//// Device Naming String Definitions 
// 
// 
// Driver WDM Device Object Name 
// ----------------------------- 
// This is the name of the NWIM driver WDM device object. 
// 
#define NETWALL_WDM_DEVICE_NAME_W  L"\\Device\\NetWall" 
#define NETWALL_WDM_DEVICE_NAME_A   "\\Device\\NetWall" 
 
#ifdef _UNICODE 
#define NETWALL_WDM_DEVICE_NAME NETWALL_WDM_DEVICE_NAME_W 
#else 
#define NETWALL_WDM_DEVICE_NAME NETWALL_WDM_DEVICE_NAME_A 
#endif 
 
// 
// Driver Device WDM Symbolic Link 
// ------------------------------- 
// This is the name of the NWIM driver device WDM symbolic link. This 
// is a user-visible name that can be used by Win32 applications to access 
// the NWIM driver WDM interface. 
// 
#define NETWALL_WDM_SYMBOLIC_LINK_W  L"\\DosDevices\\NetWall" 
#define NETWALL_WDM_SYMBOLIC_LINK_A   "\\DosDevices\\NetWall" 
 
#ifdef _UNICODE 
#define NETWALL_WDM_SYMBOLIC_LINK  NETWALL_WDM_SYMBOLIC_LINK_W 
#else 
#define NETWALL_WDM_SYMBOLIC_LINK  NETWALL_WDM_SYMBOLIC_LINK_A 
#endif 
 
// 
// Driver WDM Device Filename 
// -------------------------- 
// This is the name that Win32 applications pass to CreateFile to open 
// the NETWALL WDM symbolic link. 
// 
#define NETWALL_WDM_DEVICE_FILENAME_W  L"\\\\.\\NetWall" 
#define NETWALL_WDM_DEVICE_FILENAME_A   "\\\\.\\NetWall" 
 
#ifdef _UNICODE 
#define NETWALL_WDM_DEVICE_FILENAME NETWALL_WDM_DEVICE_FILENAME_W 
#else 
#define NETWALL_WDM_DEVICE_FILENAME NETWALL_WDM_DEVICE_FILENAME_A 
#endif 
 
 
///////////////////////////////////////////////////////////////////////////// 
//// IOCTL Code Definitions 
// 
 
///////////////////////////////////////////////////////////////////////////// 
//// IOCTL Code Definitions 
// 
 
#define IOCTL_NETWALL_GET_API_VERSION           CTL_CODE(FILE_DEVICE_NETWORK, 0x000, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_GET_DRIVER_DESCRIPTION    CTL_CODE(FILE_DEVICE_NETWORK, 0x001, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_ENUM_ADAPTERS             CTL_CODE(FILE_DEVICE_NETWORK, 0x002, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_OPEN_VIRTUAL_ADAPTER      CTL_CODE(FILE_DEVICE_NETWORK, 0x003, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_OPEN_LOWER_ADAPTER        CTL_CODE(FILE_DEVICE_NETWORK, 0x004, METHOD_BUFFERED, FILE_ANY_ACCESS) 
 
// IOCTL Code Definitions For NetWall Filter 
#define NETWALL_FILTER_BASE                     (FILE_DEVICE_NETWORK + 0x01F) 
 
#define IOCTL_NETWALL_SET_FILTER                CTL_CODE(NETWALL_FILTER_BASE, NETWALL_FILTER_BASE+0x1, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_CLEAR_FILTER              CTL_CODE(NETWALL_FILTER_BASE, NETWALL_FILTER_BASE+0x2, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_OPEN_LOGPRINT             CTL_CODE(NETWALL_FILTER_BASE, NETWALL_FILTER_BASE+0x3, METHOD_BUFFERED, FILE_ANY_ACCESS) 
#define IOCTL_NETWALL_CLOSE_LOGPRINT            CTL_CODE(NETWALL_FILTER_BASE, NETWALL_FILTER_BASE+0x4, METHOD_BUFFERED, FILE_ANY_ACCESS) 
 
 
///////////////////////////////////////////////////////////////////////////// 
//// Structure Definitions 
// 
// Specify Structure Packing 
// 
#pragma pack(push,1) 
 
///////////////////////////////////////////////////////////////////////////// 
//// IM_OPEN_ADAPTER Structure Definition 
// 
// Used to pass wide character adapter name down to driver and return 
// NDIS_STATUS of the completed operation back to the Win32 application. 
// 
typedef 
struct _IM_OPEN_ADAPTER 
{ 
    NDIS_STATUS     m_nOpenStatus;   // Open Completion Status 
  /*NDIS_STRING     m_AdapterName;*/ // Wide Character Adapter Name Follows m_nOpenStatus... 
} IM_OPEN_ADAPTER, *PIM_OPEN_ADAPTER; 
 
 
///////////////////////////////////////////////////////////////////////////// 
//// IM_FILTER Structure Definition 
 
#define NW_MAX_PROTOCOL			    5 
#define NW_MAX_ACTION				3 
#define NW_MAX_DIRECTION			3 
 
#define NETWALL_ACTION_PASS         0x0000 
#define NETWALL_ACTION_DROP         0x0001 
#define NETWALL_ACTION_LOG          0x0002 
 
#define NETWALL_DIRECTION_IN        0x0001 
#define NETWALL_DIRECTION_OUT       0x0002 
#define NETWALL_DIRECTION_BOTH      0x0004 
 
// 
// Rule item. 
// 
typedef struct _RULE_ITEM  
{ 
    UINT	cbSize; 
    UINT	bUse; 
    UINT	iProto; 
     
    ULONG	ulSrcStartIp; 
    ULONG	ulSrcEndIp; 
    USHORT	usSrcStartPort; 
    USHORT	usSrcEndPort; 
     
    UCHAR	ucDirection; 
     
    ULONG	ulDestStartIp; 
    ULONG	ulDestEndIp; 
    USHORT	usDestStartPort; 
    USHORT	usDestEndPort; 
     
    UCHAR	ucAction; 
    char	chMsg[1]; 
     
} RULE_ITEM, * PRULE_ITEM; 
 
// 
// Restore Default Structure Packing 
// 
#pragma pack(pop) 
 
 
#endif /* _COMM_H_ */