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

📄 dispatch.cpp

📁 利用C++工具进行编程,NDIS的PASSTHRU层的驱动程序,是非常实用的程序.
💻 CPP
字号:
#include"stdafx.h"
#include"Dispatch.h"

#include"winIoctl.h"

#include"..\passthru1024\MyTypeDef.h"
#include"..\passthru1024\MyIoCtl.h"

static char pDeviceFileName[]="\\\\.\\MyTest";

HANDLE SysHandle;

void DispatchInit(void)
{
	SysHandle = CreateFile(pDeviceFileName,
								0,//GENERIC_READ|GENERIC_WRITE,
								0,
								NULL,
								OPEN_EXISTING,
								0,//FILE_ATTRIBUTE_SYSTEM,
								NULL );
}

void DispatchCmd(void)
{
	unsigned char *pTempInData;
	DWORD dTempInDataSize;
	unsigned char *pTempOutData;
	DWORD dTempOutDataSize;
	DWORD dTempRetSize;

	dTempInDataSize=sizeof(GuiFilterItem) + sizeof(FilterContext) +2;
	dTempOutDataSize=dTempInDataSize;
	pTempInData=new unsigned char[dTempInDataSize];
	pTempOutData=new unsigned char[dTempOutDataSize];

	//Set Filter Item.
	GuiFilterItem *pTempFilterItem;

	pTempFilterItem=GetGuiFilterItem(pTempInData);
	
	pTempFilterItem->GuiFilterType=FilterIpSend|FilterFlag;
	
	pTempFilterItem->GuiFilterLen=sizeof(FilterContext);
	
	
	//Set filter context.
	
	FilterContext *pTempFilterContext;

	pTempFilterContext=GetGuiFilterContext(pTempInData);

	pTempFilterContext->Include=0;

	/***Filter Ip***********/

	
//Send Filter.
	pTempFilterItem->GuiFilterType=FilterIpSend|FilterFlag;
	pTempFilterContext->SrcIpOperate=AndOperateType;
	
	pTempFilterContext->MinSrcIp.address.U8Address[0]=192;
	pTempFilterContext->MinSrcIp.address.U8Address[1]=168;
	pTempFilterContext->MinSrcIp.address.U8Address[2]=0;
	pTempFilterContext->MinSrcIp.address.U8Address[3]=19;
	
	pTempFilterContext->MaxSrcIp.address.U8Address[0]=192;
	pTempFilterContext->MaxSrcIp.address.U8Address[1]=168;
	pTempFilterContext->MaxSrcIp.address.U8Address[2]=0;
	pTempFilterContext->MaxSrcIp.address.U8Address[3]=19;
	
	pTempFilterContext->DestIpOperate=AndOperateType;
	
	pTempFilterContext->MinDestIp.address.U8Address[0]=192;
	pTempFilterContext->MinDestIp.address.U8Address[1]=168;
	pTempFilterContext->MinDestIp.address.U8Address[2]=0;
	pTempFilterContext->MinDestIp.address.U8Address[3]=2;
	
	pTempFilterContext->MaxDestIp.address.U8Address[0]=192;
	pTempFilterContext->MaxDestIp.address.U8Address[1]=168;
	pTempFilterContext->MaxDestIp.address.U8Address[2]=0;
	pTempFilterContext->MaxDestIp.address.U8Address[3]=2;
	
/*	
//Receive Filter.	
	pTempFilterItem->GuiFilterType=FilterIpRev|FilterFlag;

	pTempFilterContext->SrcIpOperate=OrOperateType;
	
	pTempFilterContext->MinSrcIp.address.U8Address[0]=192;
	pTempFilterContext->MinSrcIp.address.U8Address[1]=168;
	pTempFilterContext->MinSrcIp.address.U8Address[2]=0;
	pTempFilterContext->MinSrcIp.address.U8Address[3]=2;
	
	pTempFilterContext->MaxSrcIp.address.U8Address[0]=192;
	pTempFilterContext->MaxSrcIp.address.U8Address[1]=168;
	pTempFilterContext->MaxSrcIp.address.U8Address[2]=0;
	pTempFilterContext->MaxSrcIp.address.U8Address[3]=2;
	
	pTempFilterContext->DestIpOperate=OrOperateType;
	
	pTempFilterContext->MinDestIp.address.U8Address[0]=192;
	pTempFilterContext->MinDestIp.address.U8Address[1]=168;
	pTempFilterContext->MinDestIp.address.U8Address[2]=0;
	pTempFilterContext->MinDestIp.address.U8Address[3]=19;
	
	pTempFilterContext->MaxDestIp.address.U8Address[0]=192;
	pTempFilterContext->MaxDestIp.address.U8Address[1]=168;
	pTempFilterContext->MaxDestIp.address.U8Address[2]=0;
	pTempFilterContext->MaxDestIp.address.U8Address[3]=19;
*/


	pTempFilterContext->IpProtoOperate=NullOperateType;
	
	pTempFilterContext->SpecialProtocolFlag=NullOperateType;

	//Dispatch cmd.
	DeviceIoControl(
		SysHandle,
		IOCTL_MYGUI_ADD_FILTER,
		pTempInData,
		dTempInDataSize,
		pTempOutData,
		dTempOutDataSize,
		&dTempRetSize,
		NULL
		);
 	
	DeviceIoControl(
		SysHandle,
		IOCTL_MYGUI_DELETE_FILTER,
		pTempInData,
		dTempInDataSize,
		pTempOutData,
		dTempOutDataSize,
		&dTempRetSize,
		NULL
		);
 		
	delete pTempInData;
	delete pTempOutData;
}

void DispatchFree(void)
{
	if( !CloseHandle(SysHandle))
		printf("XXX  CloseHandle failed %d\n",GetLastError());
}

⌨️ 快捷键说明

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