<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/oeichenwei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oeichenwei]]></copyright><item><title><![CDATA[VS2008 AddIn for C++ code coverage 更新]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/6193116</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/6193116</guid><author>oeichenwei</author><pubDate>Fri, 18 Feb 2011 13:09:00 +0800</pubDate><description><![CDATA[http://code.google.com/p/gtestvsaddin/最近对该项目做了一个重要的补充，增加了Coverage HTML报告的生成以及多个Coverage result的merge，甚至支持多个测试程序对同一个source code进行测试的Coverage进行合并。并支持文件过滤，可以指定生成某个文件的Coverage报告。不过，整个插件的UI还没有进行完整的调整，以及安装包都还没来得及更新。下面是一些图片:]]></description><category></category></item><item><title><![CDATA[__declspec(dllimport)的作用]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/6101884</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/6101884</guid><author>oeichenwei</author><pubDate>Tue, 28 Dec 2010 09:13:00 +0800</pubDate><description><![CDATA[<br />本文讨论Windows DLL编程中的导入：__declspec(dllimport)。     作者：tyc611，2007-05-27 
    在Windows DLL编程时，可使用__declspec(dllimport)关键字导入函数或者变量。 函数的导入     当你需要使用DLL中的函数时，往往不需要显示地导入函数，编译器可自动完成。但如果你显示地导入函数，编译器会产生质量更好的代码。由于编译器确切地知道了一个函数是否在一个DLL中，它就可以产生更好的代码，不再需要间接的调用转接]]></description><category></category></item><item><title><![CDATA[VS2008 AddIn for C++ code coverage]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/5633420</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/5633420</guid><author>oeichenwei</author><pubDate>Sat, 29 May 2010 18:57:00 +0800</pubDate><description><![CDATA[在Linux下面单元测试比较流行的组合是gtest+gmock+gcov，在Windows下面的coverage工具没有那么方便，很多要收费。不过其实VS2008的Team Suite里面已经包括了coverage工具，只是需要使用命令行来使用比较不方便。在我的前面的博客里我说打算做个AddIn来简化这个操作，现在终于做完了，放在了google code上面，有兴趣的可以下载试用。http://c]]></description><category></category></item><item><title><![CDATA[使用CFileDialog GetOpenFileName选择文件夹]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/5571395</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/5571395</guid><author>oeichenwei</author><pubDate>Sun, 09 May 2010 10:05:00 +0800</pubDate><description><![CDATA[比较简单也比较传统的方式是使用SHBrowseForFolder，不过说实话这个大概是微软最差的一个控件了，用过的人都知道！完全没有GetOpenFileName那么好用的界面，但是GetOpenFileName不支持文件夹的选择，只能选择文件！本文提供了一个比较好的解决方法：1、自Vista之后的操作系统，提供了IFileDialog接口，事实上GetOpenFileName缺省也使用这]]></description><category></category></item><item><title><![CDATA[使用VS2008 Team System对C++本地代码进行Code Coverage Report]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/5537472</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/5537472</guid><author>oeichenwei</author><pubDate>Wed, 28 Apr 2010 09:19:00 +0800</pubDate><description><![CDATA[Native C++ Code Coverage reports using Visual Studio 2008 Team System The code coverage tool in Visual Studio 2008 Team System is quite easy to use from within the IDE unless you want code cover]]></description><category></category></item><item><title><![CDATA[EnglishPlayer ---- 英语听写工具发布了!]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/5513332</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/5513332</guid><author>oeichenwei</author><pubDate>Wed, 21 Apr 2010 21:30:00 +0800</pubDate><description><![CDATA[好久没更新日志了，一直在忙着推出我的英语听写工具软件！主要功能如下：1、慢速播放功能，播放英语的时候如果听不清楚可以慢速播放；2、自动断句听写功能，在听写模式，根据语音自动断句，方便听写；3、听写回放功能，能根据听写的时序，一句一句加亮回放！4、在学习听力教程播放时，如果某句话某个单词没听懂，可以随时自动复读最近的一句，不需要AB复读那种麻烦的设置！先写这么多了，更详细的使]]></description><category></category></item><item><title><![CDATA[解决Windows 7下VS2008注册无法出现输入框]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/5013945</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/5013945</guid><author>oeichenwei</author><pubDate>Tue, 15 Dec 2009 20:19:00 +0800</pubDate><description><![CDATA[http://blog.sina.com.cn/s/blog_57b5da120100gk7l.html原来微软只是把那几个框隐藏了，果然是高手啊，这个都被想到了！另外，如果自己编译运行的话，别忘记使用管理员权限运行，否则发送消息会失败！	HWND hWnd;	INT i;	// 定位“Microsoft Visual Studio 2008 安装程序 - 维护页”窗口	h]]></description><category></category></item><item><title><![CDATA[VS2008通过宏关闭IntelliSense]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4904360</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4904360</guid><author>oeichenwei</author><pubDate>Mon, 30 Nov 2009 12:10:00 +0800</pubDate><description><![CDATA[VS2008如果打开的solution包括的工程比较多，不停的Intellisense实在恼人，又导致速度很慢！VS2008没有提供配置关闭Intellisense，不过幸好MSDN有VC++ Team的blog提供了解决方法：Controlling IntelliSense Through Macros，这下VS2008清净了！]]></description><category></category></item><item><title><![CDATA[double的结构]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4828860</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4828860</guid><author>oeichenwei</author><pubDate>Wed, 18 Nov 2009 15:20:00 +0800</pubDate><description><![CDATA[我们知道，每个数字都可以表示成科学计数法，比如5.12e10等于5.12 x 102, 对二进制也是一样可以适用，比如5的二进制格式是0101，使用科学计数法表示的结果就是1.01 x (0010)2。浮点数就是采用科学计数法存储的，对于double而言，总共64位，最高位是符号位：0表示正，1表示负，接着的11位为指数位，关系为：11位数组成的值(无符号)－1023＝指数；剩下的52位是小数位(]]></description><category></category></item><item><title><![CDATA[sscanf支持正则表达式]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4815482</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4815482</guid><author>oeichenwei</author><pubDate>Mon, 16 Nov 2009 12:54:00 +0800</pubDate><description><![CDATA[ http://hi.baidu.com/yinjianren/blog/item/28dce5ca75e30585c9176896.html支持集合操作： %[a-z] 表示匹配a到z中任意字符，贪婪性(尽可能多的匹配) %[aB] 匹配a、B、中一员，贪婪性 %[^a] 匹配非a的任意字符，贪婪性 是不是感觉眼熟了啊，不错，这和正则表达式很相似，而且仍然支持过滤，即可以有%*[a-z]]]></description><category></category></item><item><title><![CDATA[内存溢出攻击分析(下)]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4659231</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4659231</guid><author>oeichenwei</author><pubDate>Mon, 12 Oct 2009 17:10:00 +0800</pubDate><description><![CDATA[非堆栈攻击前面的例子里面我们展示了如何在接管了程序的控制权后执行自己代码的方法，但是如果被攻击者阻止执行任何在堆栈上面的代码，那么这个方法将立即失效。所以现在所谓的基于“非堆栈”的方法正在被越来越多的使用。其实这个方法的原理也不新鲜，就是我们返回地址不再填充为stack上面的地址，而是直接填系统函数的地址，比如WinExec的程序段地址。剩下的问题是，如何将参数压入堆栈，刚刚好在调用系统函数的]]></description><category></category></item><item><title><![CDATA[内存溢出攻击分析(上）]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4650779</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4650779</guid><author>oeichenwei</author><pubDate>Sat, 10 Oct 2009 16:02:00 +0800</pubDate><description><![CDATA[内存溢出攻击分析什么是内存溢出？简单的说，内存溢出就是程序向内存写入了比分配更多的空间更多的内容。攻击者据此控制程序执行的路径，冒名执行它的代码。对那些好奇这一切都是如何发生的人，本文试图详细介绍攻击的实现机制并提出一些预防措施。从我们知道的经验来看，大多都听说过这些攻击，但是很少几个真的理解攻击的具体机制，有些人有些模糊的印象，甚至有些人根本不知道越界攻击是什么。还有些人认为这个属于秘密]]></description><category></category></item><item><title><![CDATA[使用Winpcap实现Windows NAT]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4536411</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4536411</guid><author>oeichenwei</author><pubDate>Wed, 09 Sep 2009 17:40:00 +0800</pubDate><description><![CDATA[最近在实现NAT穿透方面的工作，因此需要测试各种各样的case，如果全部都使用真实的环境测试实在太麻烦，效率太低，所以就根据开源的项目：http://www.kobore.net/soft/pipmasq/,进行了适当的修改，模拟了各种NAT的端口的算法。修改后的程序支持XP/VISTA。最近非常追求100%单元测试，因此也做了很多底层的网络环境模拟器，也对TCP/IP协议有了更深的了解，比较开心]]></description><category></category></item><item><title><![CDATA[使用LSP进行带宽限制(Net limiter)]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4408030</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4408030</guid><author>oeichenwei</author><pubDate>Tue, 04 Aug 2009 16:33:00 +0800</pubDate><description><![CDATA[在开发过程中常常需要模拟各种带宽，以尽可能的模拟用户的状况，解决一些Corner的case。但是往往由于工具不力，我们费时费力还得不到很好的结果。关于带宽限制的软件还真不多，国外有一个Net Limiter不过要收费的。于是花了两天时间自己根据自己的需要简单的时间实现了一个，原理是使用LSP过滤，下面简单介绍一下。1. 什么是LSP？    LSP – Layered Service Pr]]></description><category></category></item><item><title><![CDATA[WinSocket的几种异步模式总结]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4407980</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4407980</guid><author>oeichenwei</author><pubDate>Tue, 04 Aug 2009 16:23:00 +0800</pubDate><description><![CDATA[使用Winsock Non-block模式的时候，我们有多少种方法进行异步接收？总共4种！1. 使用WSAAsyncSelect:    使用该方法可以指定两种模式，一种是事件通知，另外一种是窗口通知。就是有数据的时候通知上层进行接收。这个是在Windows上面使用最多的。2. 创建线程使用select模式：    这个方法的好处是标准接口，基本在系统之间不需要怎么移植，但是实际使]]></description><category></category></item><item><title><![CDATA[指针数组]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4353701</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4353701</guid><author>oeichenwei</author><pubDate>Thu, 16 Jul 2009 14:42:00 +0800</pubDate><description><![CDATA[这个属于非常基础的东西了，不过的确容易出错，所以一般我都避免使用;)最近在弄cppxml.googlecode.com，因此又重新复习了一把，下面是4个test case		data **pDataArray = new data*[10];		char (*pDim2)[10] = new char[5][10];		char *str[] = {"China","Japan",]]></description><category></category></item><item><title><![CDATA[C++异常处理]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4299767</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4299767</guid><author>oeichenwei</author><pubDate>Fri, 26 Jun 2009 10:08:00 +0800</pubDate><description><![CDATA[结构化异常(structured exception) vs C++异常(C++ exception)大家都知道C++异常是C++语言的一个特性，用户可以使用throw的方式来抛出异常，try{} catch(...){}来捕获异常。结构化异常是诸如，Zero Divided,  Access violations等异常，这些异常是由系统支持的，并非语言特性。在C语言或者汇编也可以截获这类]]></description><category></category></item><item><title><![CDATA[创建你自己的PDB符号服务器create your pdb symbol server]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4243463</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4243463</guid><author>oeichenwei</author><pubDate>Thu, 04 Jun 2009 22:02:00 +0800</pubDate><description><![CDATA[使用Windbg或者VS2008根据dump文件（如何创建c++ Minidump）来调试程序的话，需要PDB文件。但是，每天都在build，就有很多版本的PDB，文件，怎么进行管理呢？微软的系统DLL的符号服务器，我想大家都用过，这个很好！如何搭建自己的符号服务器呢？首先下载 Debugging Tools for Windows 里面有一个symstore.exe;用法如下： ]]></description><category></category></item><item><title><![CDATA[VS2008 Addinl里面 显示自定义图标]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4216950</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4216950</guid><author>oeichenwei</author><pubDate>Tue, 26 May 2009 12:58:00 +0800</pubDate><description><![CDATA[在Visual Studio的ADDIN里面，如果想为自己的TOOLBAR上面的图标自己定义的话，需要定制一个资源DLL文件，并将该DLL文件放置在和addin对应的1033目录下面，在注册的时候增加：       val SatelliteDllName = s CppCleanUI.dll       val SatelliteDllPath = s %MODULE_PATH%详细]]></description><category></category></item><item><title><![CDATA[ATL COM控件开发中在RGS文件里面使用变量]]></title><link>https://blog.youkuaiyun.com/oeichenwei/article/details/4216925</link><guid>https://blog.youkuaiyun.com/oeichenwei/article/details/4216925</guid><author>oeichenwei</author><pubDate>Tue, 26 May 2009 12:47:00 +0800</pubDate><description><![CDATA[最近在做一个Visual Studio的Add-in Toolbar，目的是进行简单的代码静态检查和部分测试自动化代码的生成。在控件注册的时候，ATL控件会使用资源文件里面的一个RGS文件（也就是注册表导入文件进行注册）。我发现在里面有使用%MODULE%这样的变量，这个会在执行DllRegisterServer的时候被解释成DLL的路径。下面是一个实例：HKCU{ NoRemove ]]></description><category></category></item></channel></rss>