📄 dispatch.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 + -