⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controlcode.h

📁 这是一本学习 window编程的很好的参考教材
💻 H
字号:
//-----------------------------------------------------------
// Author & Create Date: Tony Zhu, 2002/04/02
//
// Pro0ect: PKF 2.0
//
// Copyright:	2002-2003 Passeck Technology.
//
//
//

#ifndef _CONTROLCODE_H
#define _CONTROLCODE_H


#define FILE_DEVICE_NDISHK		(32767 + 87)	// 0x7FFF + 78
#define nDisHK_API_BASE		(2047 + 87)		// 0x07FF + 78

#define CTL_CODE_EX(Function)	CTL_CODE(FILE_DEVICE_NDISHK, \
			(nDisHK_API_BASE + Function), METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISHK_MALLOC_ACL_BUFFER		CTL_CODE_EX(0)
#define IOCTL_NDISHK_FREE_ACL_BUFFER 		CTL_CODE_EX(1)
#define IOCTL_NDISHK_GET_ACL_BUFFER 		CTL_CODE_EX(2)

#define IOCTL_NDISHK_GET_BUFFER_POINT 		CTL_CODE_EX(4)
#define IOCTL_NDISHK_GET_DIRECTION_POINT 	CTL_CODE_EX(5)
#define IOCTL_NDISHK_ADD_NETBIOS_NAME	 	CTL_CODE_EX(6)

#define IOCTL_NDISHK_SET_FILTER_MODE	 	CTL_CODE_EX(8)
#define IOCTL_NDISHK_SET_PKF_HANDLE 	CTL_CODE_EX(9)
#define IOCTL_NDISHK_GET_NETBIOS_NAME	 	CTL_CODE_EX(10)

#define IOCTL_NDISHK_GET_NAME_FROM_IP	 	CTL_CODE_EX(11)
#define IOCTL_NDISHK_GET_IP_FROM_NAME		CTL_CODE_EX(12)
#define IOCTL_NDISHK_GET_NETBIOS_NAME_LIST	CTL_CODE_EX(13)

//
// 2002/08/20 add
//
#define IOCTL_NDISHK_UNMAP_ACL_BUFFER		CTL_CODE_EX(14)
#define IOCTL_NDISHK_UNMAP_BUFFER_POINT	CTL_CODE_EX(15)

//
// 2002/08/21 add
//
#define IOCTL_NDISHK_REFRESH_HOOK_SEND		CTL_CODE_EX(16)



#define IOCTL_NDISHK_GET_MAC_ADDRESS_FROM_IP 	CTL_CODE_EX(17)
#define IOCTL_NDISHK_GET_PROCESS_INFO CTL_CODE_EX(18)

#define IOCTL_NDISHK_ADD_MAC	CTL_CODE_EX(19)

#define IOCTL_NDISHK_SET_DNS_MAC	CTL_CODE_EX(20)

#define IOCTL_REGMON_GET_REG_INFO      CTL_CODE_EX(21) 



#define FILE_DEVICE_DRVFLTIP  0x00654322



//
// Macro definition for defining IOCTL and FSCTL function control codes.  Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//








//
// 2002/08/20 add
//
#define TYPE_IOCTL_UNMAP_BUFFER_1			1
#define TYPE_IOCTL_UNMAP_BUFFER_2			2

//static BYTE CONTROL_CODE_GUID[] = {0x3e,0x83,0x78,0x43,0x82,0x84,0x78,0x43,0x76,0x83,0x7e,0x88,0x55,0x8e,0x7d,0x76,0x7e,0x7f,0x7g,0x78,0x76,0x7f,0x4g,0x89,0x70,0x83,0x43,0x80,0x7e,0x76,0x82,0x84,0x78,0x88,0x70,0x7b,0x55,0x76,0x7e,0x7f,0x7c,0x83,0x7e,0x8e,0x7c,0x83,0x7e,0x8e,0x3d,0x3e,0xd0,0xcf,0x45,0x46,0xg4,0xd5,0xc6,0xc6,0xfd,0xe4,0xc7,0xc5,0xgd,0xdc,0xg9,0xe6,0xc4,0xc8,0xe5,0xdf,0xbe,0xd3,0xc6,0xc6,0x35,0x40,0x4b,0x4d,0x4b,0x4e,0x4d,0x40,0x45,0x46,0x4e,0x48,0x46,0x3d,0xeg,0xcg,0x03,0xe4,0xbg,0xcf,0x4f,0x69,0x60,0x40,0x40,0x45,0x48,0x45,0x4d,0x4f,0x59,0x5e,0x65,};



//#define MAX_SPI_PORT					8192
#define MAX_PACKET_BUFFER				512
#define MAX_PACKET_ONLINE				1024

#define PORT_LENGTH						2

typedef struct __PACKET_BUFFER__		PACKET_BUFFER, *PPACKET_BUFFER;
#define PACKET_BUFFER_LENGTH			sizeof(PACKET_BUFFER)
#define PACKET_INIT_LENGTH				PACKET_BUFFER_LENGTH

typedef struct __PACKET_DIRECTION__		PACKET_DIRECTION, *PPACKET_DIRECTION;
#define PACKET_DIRECTION_LENGTH			sizeof(PACKET_DIRECTION)

#define PACKET_STATUS_FREE			0
#define PACKET_STATUS_USING			1
#define NETBIOS_NAME_MAX_LENTH				64
struct __PACKET_BUFFER__
{
	BYTE		Status;
	BYTE		AclType;
	BYTE		NetType;
	BYTE		TimeType;

	ULONG		AclId;

	union
	{
		struct
		{
			USHORT	TcpCode		: 6;
			USHORT	Reserved	: 10;
		};
		struct
		{
			USHORT	TcpFin		: 1;
			USHORT	TcpSyn		: 1;
			USHORT	TcpRst		: 1;
			USHORT	TcpPsh		: 1;
			USHORT	TcpAck		: 1;
			USHORT	TcpUrg		: 1;

			USHORT	Direction	: 1;		// 0: IN, 1: OUT
			USHORT	SendOrRecv	: 1;
			USHORT	Action		: 8;
		};
	};
	BYTE	bReserved[2];

	BYTE	Protocol;
	BYTE	Week;
	BYTE	IcmpType;
	BYTE	IcmpSubType;

	ULONG	Time;
	BYTE    SourceMac[6];
	BYTE    DestinationMac[6];
	char	SourceName[NETBIOS_NAME_MAX_LENTH];
	char	DestinationName[NETBIOS_NAME_MAX_LENTH];
	ULONG	SourceIp;
	ULONG	DestinationIp;

	union
	{
		ULONG	Id;
		struct
		{
			USHORT	SourcePort	: 16;
			USHORT	DestinationPort : 16;
		};
	};

	ULONG	DataBytes;
	ULONG	ProcessHandle;
	ULONG bDeleteFlag;//这个标志为零,表示该包可以安全写入,向该包写入信息时,会对该成员置1,读取该包后清零

	char sProcess[16];
	char szMatchRule[32];
};

struct	__PACKET_DIRECTION__
{
	ULONG	Id;

	struct
	{
		BYTE	Direction : 4;
		BYTE	Action : 4;
	};

	BYTE	NetType;

	struct
	{
		BYTE	AclType : 4;
		BYTE	Reserved : 2;
		BYTE	DeleteIn : 1;
		BYTE	DeleteOut: 1;
	};

	BYTE	Protocol;

	ULONG	AclId;
	ULONG	Time;
	ULONG	ProcessHandle;
	ULONG	SendData;
	ULONG	RecvData;
	ULONG	LocalIp;
	ULONG	RemoteIp;

	USHORT	LocalPort;
	USHORT	RemotePort;
	ULONG bDeleteFlag;//这个标志为零,表示该包可以安全写入,向该包写入信息时,会对该成员置1,读取该包后清零

	char sProcess[16];
	char szMatchRule[32];
};

typedef struct __PACKET_BUFFER_POINT__  PACKET_BUFFER_POINT, *PPACKET_BUFFER_POINT;
struct __PACKET_BUFFER_POINT__
{
	ULONG   dwFlag; //标志:0x12345678
	int		MaxCount;
	int*	WriteIndex;
	int*	ReadIndex;
	PPACKET_BUFFER pPacket;
};

typedef struct __DIRECTION_POINT__  DIRECTION_POINT, *PDIRECTION_POINT;
struct __DIRECTION_POINT__
{
	int*	DirectionCount;
	PPACKET_DIRECTION pDirection;
	PPACKET_DIRECTION pDelete;
};




typedef struct _NAME_LIST  NAME_LIST, *PNAME_LIST;

struct _NAME_LIST
{
	PNAME_LIST pNext;
	DWORD	Address;
	char	Name[NETBIOS_NAME_MAX_LENTH];
};
#define NAME_LIST_LENTH		sizeof(NAME_LIST)



//struct to define filter rules
typedef struct filter
{
	USHORT protocol;		//protocol used
	
	ULONG sourceIp;			//source ip address
	ULONG destinationIp;	//destination ip address
	
	ULONG sourceMask;		//source mask
	ULONG destinationMask;	//destination mask
	
	USHORT sourcePort;		//source port
	USHORT destinationPort; //destination port
	
	BOOLEAN drop;			//if true, the packet will be drop, otherwise the packet pass
}IPFilter;



//struct to build a linked list 
struct filterList
{
	IPFilter ipf;
	
	struct filterList *next;
};


//Ip Header
typedef struct IPHeader 
{
    UCHAR     iphVerLen;      // Version and length 
    UCHAR     ipTOS;          // Type of service 
    USHORT    ipLength;       // Total datagram length 
    USHORT    ipID;		      // Identification 
    USHORT    ipFlags;	      // Flags
    UCHAR     ipTTL;	      // Time to live 
    UCHAR     ipProtocol;	  // Protocol 
    USHORT    ipChecksum;     // Header checksum 
    ULONG     ipSource;       // Source address 
    ULONG     ipDestination;  // Destination address 
} IPPacket; 


//TCP Header
typedef struct _TCPHeader
{
	USHORT			sourcePort;			// Source Port
	USHORT			destinationPort;	// Destination Port
	ULONG			sequenceNumber;		// Number of Sequence
	ULONG			acknowledgeNumber;	// Number of aknowledge
	UCHAR			dataoffset;			// Pointer to data
	UCHAR			flags;				// Flags
	USHORT			windows;			// Size of window
	USHORT			checksum;			// Total checksum
	USHORT			urgentPointer;		// Urgent pointer
} TCPHeader;


//UDP Header
typedef struct _UDPHeader
{
	USHORT			sourcePort;			// Source Port
	USHORT			destinationPort;	// Destination Port
	USHORT			len;				// Total length
	USHORT			checksum;			// Total checksum
} UDPHeader;

//Process Info
#define  MAX_PROCESS_COUNT 256
typedef struct _ProcessInfo
{
	ULONG           PID;        //Process ID

	ULONG			CreateTime;
	ULONG			CloseTime;

	ULONG           bUsed;

}ProcessInfo;
//
// Definition of type and code field values.
//
#define	ICMP_ECHOREPLY			0		/* echo reply */
#define	ICMP_UNREACH			3		/* dest unreachable, codes: */
#define		ICMP_UNREACH_NET			0		/* bad net */
#define		ICMP_UNREACH_HOST			1		/* bad host */
#define		ICMP_UNREACH_PROTOCOL		2		/* bad protocol */
#define		ICMP_UNREACH_PORT			3		/* bad port */
#define		ICMP_UNREACH_NEEDFRAG		4		/* IP_DF caused drop */
#define		ICMP_UNREACH_SRCFAIL		5		/* src route failed */
#define		ICMP_UNREACH_NET_UNKNOWN	6		/* unknown net */
#define		ICMP_UNREACH_HOST_UNKNOWN	7		/* unknown host */
#define		ICMP_UNREACH_ISOLATED		8		/* src host isolated */
#define		ICMP_UNREACH_NET_PROHIB		9		/* prohibited access */
#define		ICMP_UNREACH_HOST_PROHIB	10		/* ditto */
#define		ICMP_UNREACH_TOSNET			11		/* bad tos for net */
#define		ICMP_UNREACH_TOSHOST		12		/* bad tos for host */
#define	ICMP_SOURCEQUENCH		4		/* packet lost, slow down */
#define	ICMP_REDIRECT			5		/* shorter route, codes: */
#define		ICMP_REDIRECT_NET			0		/* for network */
#define		ICMP_REDIRECT_HOST			1		/* for host */
#define		ICMP_REDIRECT_TOSNET		2		/* for tos and net */
#define		ICMP_REDIRECT_TOSHOST		3		/* for tos and host */
#define	ICMP_ECHO				8		/* echo service */
#define	ICMP_ROUTERADVERT		9		/* router advertisement */
#define	ICMP_ROUTERSOLICIT		10		/* router solicitation */
#define	ICMP_TIMXCEED			11		/* time exceeded, code: */
#define		ICMP_TIMXCEED_INTRANS		0		/* ttl==0 in transit */
#define		ICMP_TIMXCEED_REASS			1		/* ttl==0 in reass */
#define	ICMP_PARAMPROB			12		/* ip header bad */
#define		ICMP_PARAMPROB_OPTABSENT	1		/* req. opt. absent */
#define	ICMP_TSTAMP				13		/* timestamp request */
#define	ICMP_TSTAMPREPLY		14		/* timestamp reply */
#define	ICMP_IREQ				15		/* information request */
#define	ICMP_IREQREPLY			16		/* information reply */
#define	ICMP_MASKREQ			17		/* address mask request */
#define	ICMP_MASKREPLY			18		/* address mask reply */


#endif // _CONTROLCODE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -