mydef.c

来自「ndis中间层驱动程序,实现中间层驱动程序」· C语言 代码 · 共 44 行

C
44
字号

#include "MyDef.h"

//extern LONG		KeReadStateEvent(IN PRKEVENT Event);
extern PVOID	gpEventObject;			// 与应用通信的事件对象
extern PVOID	SystemVirtualAddress;	// 共享内存地址

// 检查数据包函数,这里只检查ARP。
UINT Check_Packet(char *pPacket)
/*--
	return value:
	1 -> 匹配
	0 -> 不匹配
--*/
{
	PARPPACKET p_arp;
	__try
	{
		__try
		{
			p_arp = (PARPPACKET)pPacket;
			// 检测是否为 ARP 数据包
			if(p_arp->dlcHeader.H_frame_type == 8 && p_arp->dlcHeader.L_frame_type == 6)
			{ 
				if(!KeReadStateEvent(gpEventObject))
				{
					// 复制数据到共享内存
					memset(SystemVirtualAddress, 0, 100);
					memcpy(SystemVirtualAddress, (char *)p_arp, sizeof(ARPPACKET));

					KeSetEvent(gpEventObject, 0, FALSE);
				}
				else{}
				return 1;
			}
		}
		except (EXCEPTION_EXECUTE_HANDLER){DbgPrint("发生异常!  --In Check_Packet\n"); }
	}
	finally{}

	return 0;
}

⌨️ 快捷键说明

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