摘要:
[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概也就3~4年时间.大多数人都认为会驱动开发的都是牛人,高手之类的.其实高手,牛人不是这样定义的.我们在学习驱动开发之前,一定要明白一个道理:术业有专攻,不要盲目跟风. [贡献者] 1> defddr 看雪学院 2> StudyRush 看雪学院 [本内容适用环境及工具] 1> Windows系统下 ... 阅读全文
posted @ 2012-10-18 19:43
xingoo
阅读(3851)
评论(1)
推荐(0)
摘要:
Start函数用于开启服务1 初始化状态变量2 创建监听套接字3 加载使用扩展API函数4 创建完成端口对象5 建立监听套接字和完成端口对象间的关联6 为监听套接字注册FD_ACCEPT时间7 投递AcceptEx IO不够时可以得到通知后创建监听线程BOOL CIOCOPServer::Start(int nPort,int nMaxConnnections,int nMaxFreeBuffers,int nMaxFreeContexts,int nInitialReads){ //检查服务是否启动 if(m_bServerStarted) return FALSE... 阅读全文
posted @ 2012-10-18 16:59
xingoo
阅读(1414)
评论(0)
推荐(0)
摘要:
1 客户连接列表 m_pConnectionList指向客户连接列表,描述所有连接的CIOCPContext对象组成的表AddAConnnection函数向列表中加入一个CIOCPContext对象。如果到达最大数量返回FALSECloseAConnnection函数关闭指定的客户连接CloseAllConnection函数遍历整个连接列表,关闭所有的客户套接字 2 抛出接收请求的列表 所有未决的accept请求都在m_pPen... 阅读全文
posted @ 2012-10-18 16:04
xingoo
阅读(677)
评论(0)
推荐(0)
摘要:
为了避免频繁的申请释放内存,使用内存池来管理缓冲区对象和客户上下文对象使用的内存。使用指针保存所有空闲的内存块,形成空闲列表。申请内存时,这个指针不为NULL,就从空闲列表中取出一个来使用,如果取完,就真正的申请内存。 1 缓冲区对象 程序使用CIOCPBuffer来描述per-IO数据,包含IO操作的必要信息,提交时,提交的就是CIOCPBuffer对象下面是申请缓冲区对象代码:CIOCPBuffer *CIOCPServer::AllocateBuffer(int nLen){ CIOCPBuffer *pBuffer = NULL; if(nLen... 阅读全文
posted @ 2012-10-18 14:44
xingoo
阅读(1376)
评论(0)
推荐(0)
摘要:
CIOCPServer类有多个IO工作线程在完成端口上处理异步IO调用。当特定的网络事件发生时,这些线程调用CIOCPServer类的虚函数,添加自己想要的代码。CIOCPServer执行的步骤:1 创建监听线程2 创建IO工作线程3 服务启动期间,监听线程一直运行,为IO工作线程提供服务 阅读全文
posted @ 2012-10-18 14:19
xingoo
阅读(953)
评论(0)
推荐(0)
摘要:
问题描述: 给定n种物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品(物品不能分割),使得装入背包中物品的总价值最大?抽象描述: x[n]:表示物品的选择,x[i]=1表示选择放进物品i到背包中。问题分析: 1.抽象之后背包问题转换为找到一个最优的数组,x1,x2,.....,xn的0-1序列。 2.假设最优解的序列为x1,x2,.....,xn,能使背包容量C的总价值最大. 如果,x1=1,则x2,...,xn是C-w1容量的背包的总价值依然是最大的序列; 如果,x1=0,则x2,....,xn是C容量的背包的总价值依然是最大的序列。这就... 阅读全文
posted @ 2012-10-18 12:44
xingoo
阅读(1320)
评论(0)
推荐(2)

浙公网安备 33010602011771号