- 博客(53)
- 收藏
- 关注

原创 NDIS LWF网络过滤驱动开发(一):LWF简介及数据结构说明
写在之前:换工作了,做Win驱动开发,还是网络过滤驱动。之前从未接触过这些,只是做着单机的桌面应用程序,所以一切是从头开始。从驱动到网络,很多的不懂,一步步走来,现在多少有些进展了,现在就总结下这段过程.(驱动开发确实麻烦,现在看见蓝屏依然会心惊肉跳)一.什么是ndis lwf驱动:NDIS: Network Driver Interface Specification.就是微软的一套网络
2016-09-27 21:44:30
5243

转载 VS2013+WDK8.1+VirtualBox NDIS Filter驱动开发环境配置
一. 主机OS为Win8.1 x64,在此OS上安装VS2013 With Update5和WDK8.1二.在虚拟机中装好64位的Win8.1系统。并在VirtualBox中配置一下网络,把网络连接方式改为“桥接网卡”,“界面名称”选择你的真机上能上网的那块网卡。为什么要用“桥接网卡”方式来让虚拟机中的系统联网,而不用默认的“网络地址转换(NAT)”?因为如果使用“网络地址转换(NAT)”
2016-06-03 18:06:56
3223

转载 Work Notes
* IP自适应网络技术(Adaptive-IP Network technologies),简称AIPN技术。AIPN技术是指在不改变原有IP网络结构的基础上,通过引入本地功能实体和引导功能实体,实现了移动节点在因特网上随意漫游的过程中,始终可以以固定的IP地址访问其归属网络,并继续享有原网络中一切权限的关键性技术。* 由AIPN技术I系列产品形成的柔性局域网系统,主要包括本地服务器(Loca
2016-06-01 18:04:50
724

转载 My Windows Driver Study Notes
* 字符串的表示驱动开发中没有用C/C++的方法来表示一个字符串,因为为了避免一些以非'\0'出现的情况。typedef struct _UNICODE_STRING {USHORT Length; // 字符串的长度(字节数)USHORT MaximumLength; // 字符串缓冲区的长度(字节数)PWSTR Buffer; // 字符串缓冲区} UNICODE_STRING
2016-05-13 17:13:02
1050

转载 My C++ Study Notes
一.const 有什么用途?(1)可以定义const常量;(2)修饰函数的返回值和形参;(3)修饰函数的定义体,定义类的const成员函数。被const修饰的东西受到强制保护,可以预防意外的变动,提高了程序的健壮性。二.关于sizeof小结
2015-08-04 11:24:19
736

原创 My C# Study Notes
一.使用Check关键字,包装在Check关键字域内时,C#编译器会使用额外的CIL(公共中间语言)来测试两个数值数据类型加减乘除时可能出现的溢出情况。 class Program { static void Main(string[] args) { //The largest value of byte is 255.
2015-08-04 10:47:04
510

转载 My MFC Study Notes
1.使Dialog 中的控件最大化,占满Dialog 的空间在Onsize的消息函数中添加如下代码:void CThreeView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); // TODO: Add your message handler code here if (GetS
2015-05-05 17:47:49
836
原创 ASCII,ANSI,UNICODE编码的一些知识。
关于编码的一些概念,自己开始模模糊糊的知道些,却不是十分明白,这里看了些资料总结了一下,若有不正确的地方,不吝赐教。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2018-01-26 13:41:32
1189
转载 介绍Windows侦测遍历Usb设备(PID&VID)及相应其插拔状态的方法
当程序需要判断当前USB端口上是否插入某个USB设备时可用此方法。大概原理是遍历USB端口得到当前连接设备的PID和VID,从而可判断指定设备是否存在。 大致流程介绍: 1.在Windows中每个USB设备的设备描述符为:HCD0, HCD1,HCD2 .......等等,从而可以得到其相应的内核路径为:\\\\.\\HCD0,\\\\.\\HCD1 ......。
2017-11-03 11:36:32
10771
1
原创 驱动开发:使用WinDbg分析定位Windows蓝屏问题
驱动开发中最头痛的问题之一莫过于随机的系统蓝屏,一切灰飞烟灭。不过还好Windows有dump文件可以帮助定位相关问题。如果蓝屏时系统明确提示是你所开发的驱动的SYS文件引起的蓝屏,那就好确认了。 在这里介绍使用WinDbg定位到蓝屏的驱动的源代码的方法。不过要满足两个条件:一.必须是所开发的驱动sys文件引起的蓝屏。二.要有源代码。 定位方法: 一.使用源代码
2017-01-18 16:17:47
4685
原创 Windows下使用IPV6 socket收发TCP,UDP数据
因工作需要在IPV6环境下测试收发TCP,UDP数据包,写了个小工具,在此记录一下。* TCP - ServerWORD wVersionRequested; WSADATA wsaData; int nError; wVersionRequested = MAKEWORD(1, 1); nError = WSAStartup(wVersionRequested, &wsa
2016-12-28 17:06:47
6718
转载 MFC运行外部exe并得到返回值
unsigned long Result; CString strWorkPath = szWorkPath;CString strRes;strWorkPath += _T("\\netcfg\\");SHELLEXECUTEINFO ShExeInfo = {0};ShExeInfo.cbSize = sizeof(SHELLEXECUTEINFO);ShExeInfo.fMask
2016-12-19 17:27:19
3165
转载 MFC关闭其他进程
#include void CloseProgram(CString strProgram){ HANDLE handle; //定义CreateToolhelp32Snapshot系统快照句柄 HANDLE handle1; //定义要结束进程句柄 handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统快照句柄
2016-12-19 17:18:56
1950
原创 MFC控制台程序隐藏CMD窗口
网上找了很多方法,都是采用#pragma comment的方式,但是用VS2010默认创建的是Unicode的工程,刚开始是了好久没有成功,现在总算好了。方法如下:1.在代码中,在include的前面添加:#ifdef UNICODE#pragma comment( linker, "/subsystem:\"windows\" /entry:\"wmainCRTStartup\"")
2016-12-04 21:36:55
3336
2
原创 NDIS LWF收发3G网卡Mobile Broadband的自定义数据
使用NDIS LWF过滤WCDMA数据,需要对相关网络数据包进行修改。测试发现3G网卡(不是所有的3G网卡)属于NdisMediumWirelessWan类型,在FilterAttach函数中对filter类型有NdisMediumWirelessWan,NdisMediumWan,NdisMedium802_3做判断。而NdisMediumWirelessWan这种网卡的数据包通过lwf抓包发现
2016-10-24 18:13:23
1072
转载 NDIS Filter Study
首先看相关概念:过滤驱动:过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。 过滤驱动就是挂载在其他驱动上,对某设备的irp进行拦截过滤作用,可以对设备进行功能扩展,或是数据加密等的驱动程序。驱动irp:驱动中的IRP的全名是I/O Request Package,即输入输出请求包,它是Wi
2016-06-03 22:41:31
1264
转载 驱动开发:WMWare+Windbg调试环境搭建
转自:http://blog.csdn.net/xuepiaosong/article/details/8236702 http://yexin218.iteye.com/blog/545187 http://blog.sina.com.cn/s/blog_79ba23780101qvwt.html一.配置环境 主机:
2016-05-30 18:53:37
593
转载 ADO:_ConnectionPtr,_RecordsetPtr,_CommandPtr
* 使用注意事项#import "C:\Program Files\Common Files\system\ado\msado15.dll" rename("EOF","adoEOF")AfxOleInit();*ADO中最重要的对象有三个:Connection、Recordset和Command,分别表示连接对象、记录集对象和命令对象。三个对象对应的智能指针分别是:_Connec
2016-03-18 21:52:41
778
原创 OpenCV 学习笔记
一.环境搭建(Win7_X64+opencv-3.0.0+VS2012)1.下载opencv-3.1.0.exe,解压到任意目录,如C:\opencv-3.0.0vs版本对应关系为:vc8 = Visual Studio 2005vc9 = Visual Studio 2008vc10 = Visual Studio 2010vc11 = Visual Studio 201
2015-12-27 20:15:08
631
转载 使用Visual Leak Detector帮助检测使用VS时的内存泄漏
1.在 http://vld.codeplex.com/ 下载安装包2.安装vld-2.4rc2-setup.exe,如安装在 D:\Program Files (x86)\Visual Leak Detector3.在工程属性中配置:c/c++ -> General -> Additional Include Directories = C:\Program Files (x86)\
2015-10-16 14:38:14
2071
转载 安卓4.4限制外置SD卡写入权限的破解方法
转自:http://bbs.lbesec.com/forum.php?mod=viewthread&tid=28067在Android开发者网站的 "外部存储技术信息"文档中描述道 : WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储授予写权限, ,应用程序无法将数据写入二级外部存储设备,除非综合权限指定了应用程序的包目录。 这
2015-10-09 14:31:32
3561
转载 VC6使用GDI+进行图像的特效处理和MFC学习笔记-1
GDI+是微软提供的做图形处理方面的一套类库,这里记录下学习过程,还有MFC的学习过程。想完成一个能打开,显示图像并进行特效处理,转存的小程序。一.环境搭建和小测试由于VC6.0不带GDI+的类库,需要自己下载相关文件,貌似高版本的VS会自带GDI+。创建一个多文档的工程,名称为"UsingGDIPlus"。将下载好的Includes文件路径添加到VC的Directories-
2015-08-05 18:01:16
1880
转载 MFC多文档框架
转自:http://blog.csdn.net/netanimals/article/details/7490488文档、视图、框架窗口、文档模板之间的相互关系,关键要理解他们的结构 1、首先应该对 CWinApp类有充分的了解 它包含并管理着应用程序的文档/视窗的所有信息。它有一个成员变量 CDocMana
2015-08-04 17:27:34
331
转载 VC Export DLL 相关知识
转自:http://www.cnblogs.com/cswuyg/archive/2011/09/30/dll.html一、导出类的简单方式这种方式是比较简单的,同时也是不建议采用的不合适方式。只需要在导出类加上__declspec(dllexport),就可以实现导出类。对象空间还是在使用者的模块里,dll只提供类中的函数代码。不足的地方是:使用者需要知道整个类的实现,包括基类、
2015-07-31 17:35:32
691
原创 C++导出函数,C++Invoke再次封装,C#调用
一.C++函数1.使用VC6新建DLL工程。2.在头文件中声明函数如: extern "C" bool ResrveUniStringEX(const wchar_t* soucrStr, wchar_t* destStr, int nSize); extern "C"是一定要加的,而且不要加_stdcall或者_cdecal。在源文件中实现这个函数。3.在Def中声明
2015-07-31 14:02:22
2087
原创 通过操作BMP文件的RGB值实现BMP文件的旋转,锐化,二值化,轮廓提取,边缘检测,合并等功能(二)
在将所有文件转为32Bit位图后,就可以进行特效处理了,首先是文件旋转/********************************************************************************** RotateImage(int nAngle)* 按照90度的角度,顺时针或者逆时针旋转图片* nAngle = 0 逆时针旋转* nAngle =
2015-05-26 11:19:05
1817
原创 通过操作BMP文件的RGB值实现BMP文件的旋转,锐化,二值化,轮廓提取,边缘检测,合并等功能(一)
本人之前没写过什么代码,只是简单地做过几个Android App,都是自己写着玩,连码农都算不上,代码功底说实话不怎么地。最近公司说可以让做开发,不过是C++,MFC方面。C++我不怎么懂,MFC更是不怎么熟悉。开始做个BMP文件显示特效处理的小程序,虽然不怎么懂,也只能边学编写了。由于水平有限,代码里很多地方会不入高手法眼,不喜勿喷,新手学习经验记录笔记而已。就当自己是什么都不懂,就把觉得应
2015-05-25 16:02:27
1376
转载 MFC 多线程及线程同步
转自:http://www.cnblogs.com/zqrferrari/archive/2010/07/07/1773113.htmlMFC 多线程及线程同步一、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常
2015-05-06 10:03:56
429
转载 使用CSplitterWnd分割View窗口
转自:http://blog.sina.com.cn/s/blog_760680fc0100pomn.html我们有时候想在单文档的界面上面实现多视图,实现的方法就是对原文档的界面进行分割,以N行M列的形式分割,当然分割也可以递归进行,分割完一次以后,我们还可以在已经分割的其中一个试图上再次分割。 下面举个例子,把一个单文档界面切分成4块。效果如下图所示。 分
2015-05-05 17:04:29
897
转载 MFCMainFrm.cpp中Include myView.h的方法
由于需要需要在MFC MainFrm中得到View的指针,方法如下: CMDIFrameWnd *pFrame= (CMDIFrameWnd *)AfxGetApp()->m_pMainWnd; CMDIChildWnd *pChild = (CMDIChildWnd *)pFrame->GetActiveFrame(); CMy_PaintView *pView = (CMy_Pain
2015-04-24 14:20:42
1320
转载 MFC ToolBar工具栏修改指定Button的Icon,添加文字的方法
一.修改指定Button的ICon: int TotalImage =m_wndColorToolBar.GetToolBarCtrl().AddBitmap(1, IDB_SELECTCHECKBOX/*BMP Resource*/); m_wndColorToolBar.SetButtonInfo(5/*Button Index In Tool Bar*/, IDB_CHECKBTNTO
2015-04-23 13:21:07
5845
转载 MFC并列显示多个工具栏(Toolbar)
转自:http://blog.csdn.net/zyrr159487/article/details/7062974第一个工具栏:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_FLOAT_MULTI | CBRS_GRIPPER | C
2015-04-23 13:16:07
4348
转载 C++资源管理的利器:RAII
RAII是指C++语言中的一个惯用法(idiom),它是“ResourceAcquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种程度上说这个名称并没有体现出该惯性法的本质精神,但是作为标准C++资源管理的关键技术,RAII早已在C++社群中深入人心。我记得第一次学到RAII惯用法是在Bjarne Stroustrup的《
2015-04-10 11:50:31
428
转载 VC6 配置Unicode的方法
转自:http://www.xuebuyuan.com/1982902.htmlVC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 1. 为工程添加UNICODE和_UNICODE预处理选项:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_M
2015-04-09 10:18:45
1848
转载 VC6中使用GDI+的方法
1.首先下载所需头文件和库文件:http://www.codersource.net/samples/mfcgdiplus.zip2.将头文件和库文件分别拷贝至VC的安装目录,如:D:\Program Files (x86)\Microsoft Visual Studio\VC98\Include 和D:\Program Files (x86)\Microsoft Visual Studi
2015-04-08 10:11:15
1016
转载 Eclipse相关使用方法
使用Ctrl+Shift+F自动格式化代码的时候,有时候折行太多反而让代码看起来更乱,不容易阅读。、修改Window-->Preferences-->Java-->Code Style-->Formatter-->Edit-->Line Wrapping-->Maximum line widthzhuanxi
2014-09-27 22:59:42
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人