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

📄 packet.h

📁 Windows防火墙与网络封包截获技术源码
💻 H
字号:
///////////////////////////////////////////////////////////////////////
// Copyright (c) 2001-2002
// XStudio Technology All Right Reserved.
// Author: Tony Zhu
// 2001-7-10 Create
// summary:
//			This Program to demo the Intermediate TDI Driver.
///////////////////////////////////////////////////////////////////////
//Driver's Function
//——————————————————————————————————————
// DD_TCP_DEVICE_NAME	: 系统设备名称,我们将挂接自己设备到这个设备之上
// TDIH_TCP_DEVICE_NAME : 自己的设备名称
// TDIH_DEV_EXT_ATTACHED: 自己设备的扩展标志
//
#define		DD_TCP_DEVICE_NAME					L"\\Device\\Tcp"
#define		TDIH_TCP_DEVICE_NAME				L"\\Device\\TonyTcpFilter"
#define		TDIH_DEV_EXT_ATTACHED				(0x00000001)
/**************************************************************************
	每一个结构必须有一个唯一的“node type”或者一个联合签名
**************************************************************************/
#define		TDIH_NODE_TYPE_TCP_FILTER_DEVICE    (0xfdecba12)

/*
	输出调试信息
*/
#define DBGPRINT(Fmt)												\
{																	\
	DbgPrint(" ***FilterTdiDriver.sys*** ");						\
	DbgPrint (Fmt);													\
}

/*
	进行64位数值的处理,请参阅DDK帮助文档关于RtlLargeIntegerEqualToZero的解释
*/
#define UTIL_IsLargeIntegerZero(ReturnValue, LargeIntegerOp, pSpinLock)	\
{																		\
   KIRQL            OldIrql;                                            \
   KeAcquireSpinLock(pSpinLock, &OldIrql);                              \
   ASSERT(RtlLargeIntegerGreaterOrEqualToZero((LargeIntegerOp)));       \
   ReturnValue = RtlLargeIntegerEqualToZero((LargeIntegerOp));          \
   KeReleaseSpinLock(pSpinLock, OldIrql);                               \
}

//——————————————————————————————————————
// 用来保存驱动程序相关信息的自定义结构类型,这个结构类型可以绑定到
// DEVICE_OBJECT对象的DeviceExtension成员变量之上,随着DEVICE_OBJECT对象在
// 不同的函数之间传递
//
typedef struct _TDIH_DeviceExtension
{
	
	ULONG			NodeType;				// 标识这个结构	
	ULONG			NodeSize;				// 这个结构的大小
	PDEVICE_OBJECT	pFilterDeviceObject;	// 过滤设备对象
	KSPIN_LOCK		IoRequestsSpinLock;		// 同时调用时的保护锁
	KEVENT			IoInProgressEvent;		// 进程间同步处理
	ULONG			DeviceExtensionFlags;	// 设备标志
	PDEVICE_OBJECT	TargetDeviceObject;		// 绑定的设备对象
	PFILE_OBJECT    TargetFileObject;		// 绑定设备的文件对象
	PDEVICE_OBJECT  LowerDeviceObject;		// 绑定前底层设备对象
	LARGE_INTEGER   OutstandingIoRequests;	

}	TDIH_DeviceExtension, *PTDIH_DeviceExtension;

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

NTSTATUS
DriverEntry(
	IN	PDRIVER_OBJECT		DriverObject,
	IN	PUNICODE_STRING		RegistryPath
);

VOID 
PacketUnload(
	IN PDRIVER_OBJECT		DriverObject
);

NTSTATUS
PacketDispatch(
    IN PDEVICE_OBJECT		DeviceObject,
    IN PIRP					Irp
);

NTSTATUS
PacketCompletion(
	IN	PDEVICE_OBJECT	DeviceObject,
	IN	PIRP			Irp,
	IN	PVOID			Context
);

NTSTATUS
TCPFilter_Attach(
	IN PDRIVER_OBJECT	DriverObject,
	IN PUNICODE_STRING	RegistryPath
);

NTSTATUS
TCPFilter_InitDeviceExtension(
	IN	PTDIH_DeviceExtension	pTDIH_DeviceExtension,
	IN	PDEVICE_OBJECT			pFilterDeviceObject,
	IN	PDEVICE_OBJECT			pTargetDeviceObject,
	IN	PFILE_OBJECT			pTargetFileObject,
	IN	PDEVICE_OBJECT			pLowerDeviceObject
);

VOID
TCPFilter_Detach(
   IN	PDEVICE_OBJECT pDeviceObject
);

⌨️ 快捷键说明

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