<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[半个网虫的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/coyer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; coyer]]></copyright><item><title><![CDATA[编写NDIS驱动，完全控制网卡收发报文]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/25830155</link><guid>https://blog.youkuaiyun.com/coyer/article/details/25830155</guid><author>coyer</author><pubDate>Wed, 14 May 2014 20:46:54 +0800</pubDate><description><![CDATA[在windows上面，利用网卡做自定义报文的收发，Winpcap是唯一选择，目前自己编写驱动来实现相关功能的基本找不到。
 
Winpcap对于接收的报文只是复制，并不阻断报文向操作系统提交，因此还是影响了操作系统，导致操作系统时不时的发出一些报文来，而这些报文又可能会干扰我们的测试过程，为了突破这个限制，我重新实现了相关的驱动，做到了以下几个功能：
 
1  和Winpcap一样出色的报]]></description><category></category></item><item><title><![CDATA[C++生成二维码总结]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/25828987</link><guid>https://blog.youkuaiyun.com/coyer/article/details/25828987</guid><author>coyer</author><pubDate>Wed, 14 May 2014 20:24:47 +0800</pubDate><description><![CDATA[这段时间做一个模块，需要能自动生成二维码，查了不少资料，做一点总结吧。
 
1  二维码基本知识的]]></description><category></category></item><item><title><![CDATA[解压内存文件]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/25403191</link><guid>https://blog.youkuaiyun.com/coyer/article/details/25403191</guid><author>coyer</author><pubDate>Fri, 09 May 2014 16:02:32 +0800</pubDate><description><![CDATA[当一段buffer为zip压缩内容时，如何解压缩呢，这里直接贴上代码
bool Resources::UnZipMemFile(MemFile* memfile, const std::wstring& dest_folder, zip_progress_callback cb_func, void* pVoid)
{
    zlib_filefunc_def zip_funcs;
  ]]></description><category></category></item><item><title><![CDATA[从Exe里面读取资源，给exe增加嵌入字体]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/25399977</link><guid>https://blog.youkuaiyun.com/coyer/article/details/25399977</guid><author>coyer</author><pubDate>Fri, 09 May 2014 15:53:27 +0800</pubDate><description><![CDATA[把数据放到Exe文件里面有很多好处，]]></description><category></category></item><item><title><![CDATA[强杀线程造成卡死的死锁问题]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/17583429</link><guid>https://blog.youkuaiyun.com/coyer/article/details/17583429</guid><author>coyer</author><pubDate>Thu, 26 Dec 2013 14:55:41 +0800</pubDate><description><![CDATA[以前使用强杀线程函数的时候，一直用的挺舒服，最近终于碰到线程锁的问题了。示例代码如下：


HANDLE g_thread_1 = NULL;
HANDLE g_thread_2 = NULL;


DWORD WINAPI ThreadFuncA(LPVOID lpThreadParameter)
{
::EnterCriticalSection(&g_lock);


]]></description><category></category></item><item><title><![CDATA[判断文件是否PE文件，是否GUI程序]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8983656</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8983656</guid><author>coyer</author><pubDate>Tue, 28 May 2013 11:03:34 +0800</pubDate><description><![CDATA[BOOL IsWindowsApp( CString strPathName )
 {
     if ( ! PathFileExists( strPathName ) )
         return FALSE;
 
     // 根据 PE 签名判断当前文件是否合法的 PE 文件
     HANDLE hFile = CreateFile( strPathName, GE]]></description><category></category></item><item><title><![CDATA[降低权限启动某个进程]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8979616</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8979616</guid><author>coyer</author><pubDate>Mon, 27 May 2013 13:58:01 +0800</pubDate><description><![CDATA[程序启动子进程时，子进程会自动使用当前进程的权限，包括ShellExecute启动的进程，都有这个问题。
当自己制作安装包时，安装包进程，在win7上，当前进程是管理员权限，启动的程序如果也以管理员权限运行，可能有问题，需要降低权限。
 
此函数的代码可以做到这一点，将当前进程的权限降低之后，再启动其他的进程。
 
BOOL CreateLowIntegrityProcess(LPCTS]]></description><category></category></item><item><title><![CDATA[插件式构架设计经验]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8938893</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8938893</guid><author>coyer</author><pubDate>Fri, 17 May 2013 11:14:12 +0800</pubDate><description><![CDATA[1  只建议导出接口或者函数，使用标准类型变量，不建议导出复杂的类。

解释：
插件式编程就是最大化的解耦，模块全部放置于DLL中，并且每个DLL只导出标准的加载函数，由加载函数再次导出模块类接口。标准的加载函数都是C风格的。导出的类在修改的时候，不应该需要编译其他的模块。由于头文件的修改会引发其他模块的重新编译，因此建议不导出复杂的类，而采用比较简单的类，或者接口。在实现时，采用继承的方式]]></description><category></category></item><item><title><![CDATA[自己开发安装程序]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8895788</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8895788</guid><author>coyer</author><pubDate>Tue, 07 May 2013 16:18:16 +0800</pubDate><description><![CDATA[自己开发安装程序
目前各种各样的安装包程序，想要一个与众不同的，那当然是自己做一个安装包最好。但做一个完整的安装包产品是非常复杂的工程，好在我们只需要安装我们自己的产品，这样事情就比较简单了，一个安装包在安装的时候，无非做以下几件事情：
1  显示一张图片，上面有按钮，有提示，有文字，等等信息。
2  用户交互之后，开始拷贝文件到目标文件夹。
3  完成注册表操作，快捷方式操作。
4]]></description><category></category></item><item><title><![CDATA[VS2010直接加载GDI+的编译不通过的问题]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8249792</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8249792</guid><author>coyer</author><pubDate>Sun, 02 Dec 2012 22:54:46 +0800</pubDate><description><![CDATA[一个WIN32程序，直接包含GDI+头文件，编译不通过。解决方法很简单，加上下面这一句：
 
#include 
 
#include 
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")]]></description><category></category></item><item><title><![CDATA[(转)VC6.0如何启用内存泄漏检测机制？  (转)]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8249789</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8249789</guid><author>coyer</author><pubDate>Sun, 02 Dec 2012 22:53:08 +0800</pubDate><description><![CDATA[(转)VC6.0如何启用内存泄漏检测机制？  (转)
http://blog.163.com/caoying_0827/blog/static/42939128200801045014266/
2008-01-10 16:50:14


 





VC++ IDE 的默认状态是没有启用内存泄漏检测机制的，也就是说即使某段代码有内存泄漏，调试会话的 Output 窗口的 D]]></description><category></category></item><item><title><![CDATA[插件式构架编程综述]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/8169466</link><guid>https://blog.youkuaiyun.com/coyer/article/details/8169466</guid><author>coyer</author><pubDate>Sat, 10 Nov 2012 16:24:25 +0800</pubDate><description><![CDATA[1.     概述
在模块化越来越规范的现代软件开发方法中，插件式编程是一个绕不开的话题，它涉及范围太广，很多编程人员在入职的初级阶段，一般都是维护一个小功能，或者维护一堆小功能，或者扩充一堆功能，但基本上不涉及到大的框架搭建，但作为提升之路，自己上了一个台阶之后，能够负责一个项目的整体搭建了，或者从头开始一个项目，就必须考虑构架了。插件式编程属于构架范围，我在这方面研究了几年，也实现了几个项目]]></description><category></category></item><item><title><![CDATA[STL使用误区]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/7984221</link><guid>https://blog.youkuaiyun.com/coyer/article/details/7984221</guid><author>coyer</author><pubDate>Sun, 16 Sep 2012 12:38:33 +0800</pubDate><description><![CDATA[STL用的人很多，可是很多新手常常误用，造成代码效率的低下。
 
1  在容器里面直接塞入类对象。
    这是最常见的误用，很多人都省事，直接把类对象放入容器，为了能够放入容器，还要给类实现 operator = 和 拷贝构造函数。这个功能，我觉得是C++看似很看，却很误导人的一个用法。从容器里面取对象，加入对象，都会造成频繁的对象拷贝过程。在Java和C#语言里面，为了从根本上杜绝这种现]]></description><category></category></item><item><title><![CDATA[winpcap使用经验]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/7984215</link><guid>https://blog.youkuaiyun.com/coyer/article/details/7984215</guid><author>coyer</author><pubDate>Sun, 16 Sep 2012 12:24:02 +0800</pubDate><description><![CDATA[Linux系统上，可以使用raw socket实现IP层的自定义，在windows上面，从windowsXP的SP2开始，就禁止假冒IP发送报文了，要实现自定义的报文发送，自写驱动是一个方法，另外一个简易方法就是使用winpcap库了。
 
winpcap是一套开源的库，在linux上有对应的库（libpcap），因此用winpcap实现的代码是可以做到跨平台移植的。
 
winpcap的]]></description><category></category></item><item><title><![CDATA[软件启动闪屏的原理与实现]]></title><link>https://blog.youkuaiyun.com/coyer/article/details/7957917</link><guid>https://blog.youkuaiyun.com/coyer/article/details/7957917</guid><author>coyer</author><pubDate>Sat, 08 Sep 2012 13:40:18 +0800</pubDate><description><![CDATA[想给公司的软件加一个启动闪屏，看看有现成的源代码没有，结果上网看了一下，没有合适的，有人做了闪屏，却是阻塞式的，也就是说什么都不干，让主程序Sleep，光闪屏给用户看，这哪是闪屏嘛，连闪屏的基本作用都没弄明白，就开始发文章号称实现了多帅的效果，服了。之后自己写了一个，这里共享一下闪屏的思路。
闪屏的本意，是因为软件启动过程比较慢，动态显示一些信息给用户，防止用户过于傻等而不爽。以前VC6时代可以]]></description><category></category></item></channel></rss>