91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 567KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-06
  • 語言: 其他
  • 標簽: 驅動,C++??

資源簡介

這個是TDI驅動,本來做這個驅動的目的, 是想在應用層程序實時動態獲得每個進程打開的網絡端口的變化情況。 因為想不到更好的辦法,同時也要兼容WIN7和WINXP,所以才使用TDI來實現。 代碼是自己開發的框架,沒借用tdifw等源碼, 代碼測試可在 64和32位位win7,winxp上運行。 除了實現獲得動態變化的端口之外, 還順便實現了每個進程的流量監控,以及每個進程的每個連接的流量情況, 還有簡單的禁止某個進程訪問網絡,至于每個進程限速的功能,暫時沒實現, 有興趣的朋友可在此基礎上做擴展, 等你做好之后就能把握理解360流量防火墻的限速的核心部分了。 應用層部分只提供了接口代碼,沒有做更詳細的開發,有興趣的朋友可開發。 做這驅動大概只用了10天時間,時間比較倉促,還望大牛們糾錯指出。

資源截圖

代碼片段和文件信息

///?By?Fanxiushu?2013-03-25

#include?
#include?
#include?
#include?“xtdi_api.h“
#include?“../driver/ioctl.h“
#pragma?comment(lib“ws2_32“)

#define?PORT_CHANGE_ARRAR_SIZE???????????500?
struct?_xtdi_h_t
{
HANDLE?hFile;
///
HANDLE?h_thr_portchange;
????PORT_CHANGE_CBK?port_change_cbk;
void*?cbk_param;
struct?xtdi_port_entry?port_array[?PORT_CHANGE_ARRAR_SIZE?];?
/////
};

#define?DRV_NAME???“xlantdi“
static?int?xtdi_start_driver()
{
SC_HANDLE?h_mgr;
SC_HANDLE?h_svc;
char?path[MAX_PATH];?
h_mgr?=?OpenSCManager(?NULL?NULL?SC_MANAGER_ALL_ACCESS?);
if(!h_mgr)return?-1;
h_svc?=?OpenService(?h_mgr?DRV_NAME??SERVICE_ALL_ACCESS?);?
if(?!h_svc?){
char*?p;?path[0]=0;
// printf(“OpenService?error.\n“);
GetModuleFileName(?NULL?path?MAX_PATH?);?
p?=?strrchr(path‘\\‘);?if(p)*p=0;?strcat(path“\\xlantdi.sys“);
h_svc?=?CreateService(h_mgr?DRV_NAME?DRV_NAME?SERVICE_ALL_ACCESSSERVICE_KERNEL_DRIVER
SERVICE_DEMAND_STARTSERVICE_ERROR_IGNORE?path?NULLNULLNULLNULLNULL?);
// CloseServiceHandle(?h_svc?);?h_svc?=?0;

}
h_svc?=?OpenService(?h_mgr?DRV_NAME??SERVICE_ALL_ACCESS?);?
if(?!h_svc){
printf(““);
return?-1;
}
if(?!StartService(?h_svc?0?NULL?)){
DWORD?dwRtn?=?GetLastError();
if(?dwRtn?!=?ERROR_IO_PENDING?&&?dwRtn?!=?ERROR_SERVICE_ALREADY_RUNNING?){
printf(“Start?Driver?Error.\n“);
}else{
///
}
}

CloseServiceHandle(?h_svc?);
CloseServiceHandle(?h_mgr?);
return?0;?
}
void*?xtdi_open()
{


struct?_xtdi_h_t*?tdi?=?(struct?_xtdi_h_t*)malloc(?sizeof(struct?_xtdi_h_t)?);
if(!tdi){
return?NULL;
}
tdi->cbk_param?=?0;?tdi->h_thr_portchange?=?NULL;
tdi->port_change_cbk?=?NULL;?
////
xtdi_start_driver();
///

tdi->hFile?=?CreateFile(“\\\\.\\xLanTdi“GENERIC_READ|GENERIC_WRITEFILE_SHARE_READ|FILE_SHARE_WRITE?NULL?
?????????????OPEN_EXISTING?FILE_FLAG_OVERLAPPED?NULL?);?
if(?tdi->hFile?==(HANDLE)-1){
free(?tdi?);
printf(?“Can?not?Open?Device?File?err=%d.\n“GetLastError()?);
return?NULL;
}
return?tdi;
}
void?xtdi_close(void*?handle?)
{
struct?_xtdi_h_t*?tdi?=?(struct?_xtdi_h_t*)handle;?
///
if(?!tdi)?return?;

xtdi_set_port_change(?handle?NULL?NULL?);
CloseHandle(?tdi->hFile?);
}

static?DWORD?__stdcall?__xtdi_port_change_thread(void*?_p)
{
struct?_xtdi_h_t*?tdi?=?(struct?_xtdi_h_t*)_p;
///
HANDLE?hEvent?=?CreateEvent(?NULL?FALSE?FALSE?NULL?);?
while(?1?){
DWORD?byte=0;?OVERLAPPED?ov;?BOOL?r;
int?count?=?0;?int?i;
memset(&ov0sizeof(ov));?ov.hEvent?=?hEvent;?
r?=?DeviceIoControl(?tdi->hFile?IOCTL_XTDI_CHANGE_PORT?NULL?0?tdi->port_array?
sizeof(struct?xtdi_port_entry)*PORT_CHANGE_ARRAR_SIZE?&byte?&ov?);
if(!r?){
if(?GetLastError()?!=?ERROR_IO_PENDING?){?Sleep(100);?continue;?}
r?=?GetOverlappedResult(?tdi->hFile?&ov?&byte?TRUE?);
if(?!r?)?{Sleep(100);?continue;?}
}
///
count?=?byte/siz

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????26624??2013-03-30?01:33??bin\xlantdi.sys

?????文件?????237622??2013-03-30?02:09??bin\xtdi_app.exe

?????文件???????5241??2013-03-30?01:33??driver\buildchk_win7_x86.log

?????文件???????6903??2013-03-30?00:47??driver\buildfre_win7_amd64.log

?????文件???????1803??2013-03-29?22:59??driver\ioctl.h

?????文件???????1698??2013-03-25?14:52??driver\main.cpp

?????文件????????537??2013-03-24?17:07??driver\makefile

?????文件??????31624??2013-03-30?01:33??driver\objchk_win7_x86\i386\main.obj

?????文件???????1489??2013-03-30?01:35??driver\objchk_win7_x86\i386\main.obj.oacr.root.x86chk.pft.xml

?????文件??????52198??2013-03-30?01:33??driver\objchk_win7_x86\i386\obj_mgr.obj

?????文件????????975??2013-03-30?01:35??driver\objchk_win7_x86\i386\obj_mgr.obj.oacr.root.x86chk.pft.xml

?????文件??????12106??2013-03-30?01:33??driver\objchk_win7_x86\i386\rbtree.obj

?????文件???????2037??2013-03-30?01:35??driver\objchk_win7_x86\i386\rbtree.obj.oacr.root.x86chk.pft.xml

?????文件?????159744??2013-03-30?01:33??driver\objchk_win7_x86\i386\vc90.pdb

?????文件??????49228??2013-03-30?01:33??driver\objchk_win7_x86\i386\xfilter.obj

?????文件???????2847??2013-03-30?01:35??driver\objchk_win7_x86\i386\xfilter.obj.oacr.root.x86chk.pft.xml

?????文件??????37164??2013-03-30?01:33??driver\objchk_win7_x86\i386\xf_connect.obj

?????文件???????1132??2013-03-30?01:35??driver\objchk_win7_x86\i386\xf_connect.obj.oacr.root.x86chk.pft.xml

?????文件??????40871??2013-03-30?01:33??driver\objchk_win7_x86\i386\xf_create.obj

?????文件????????609??2013-03-30?01:35??driver\objchk_win7_x86\i386\xf_create.obj.oacr.root.x86chk.pft.xml

?????文件??????39135??2013-03-30?01:33??driver\objchk_win7_x86\i386\xf_recv.obj

?????文件???????5374??2013-03-30?01:35??driver\objchk_win7_x86\i386\xf_recv.obj.oacr.root.x86chk.pft.xml

?????文件??????27658??2013-03-30?01:33??driver\objchk_win7_x86\i386\xf_send.obj

?????文件???????2436??2013-03-30?01:35??driver\objchk_win7_x86\i386\xf_send.obj.oacr.root.x86chk.pft.xml

?????文件??????36898??2013-03-30?01:33??driver\objchk_win7_x86\i386\xioctl.obj

?????文件???????4153??2013-03-30?01:35??driver\objchk_win7_x86\i386\xioctl.obj.oacr.root.x86chk.pft.xml

?????文件????????511??2013-03-30?01:33??driver\objchk_win7_x86\i386\_objects.mac

?????文件??????82679??2013-03-30?00:47??driver\objfre_win7_amd64\amd64\main.obj

?????文件???????1489??2013-03-30?00:49??driver\objfre_win7_amd64\amd64\main.obj.oacr.root.amd64fre.pft.xml

?????文件?????102949??2013-03-30?00:47??driver\objfre_win7_amd64\amd64\obj_mgr.obj

............此處省略48個文件信息

評論

共有 條評論