首页
论坛
课程
招聘
[分享]Windows驱动开发初学者注意事项
2021-8-18 09:19 5181

[分享]Windows驱动开发初学者注意事项

2021-8-18 09:19
5181

最近给学弟他们分析一些蓝屏,代码蓝屏有共性,因代码的不规范引起的,简单总结了一下:

1) 平衡原则: 

  • 创建线程 - 必须销毁 

  • 创建回调 - 必须销毁 

  • 申请内存 - 必须释放   

  • 锁、互斥等句柄 - 必须关闭释放 

  • 链表规范使用 - API初始化 - API释放删除

  • 链表数据 -  卸载之前要清空数据

2) 大量的字符串尽量应用层处理 或者 转换成自定义的二进制数据内核做memcpy对比。

3) 很多场景应该对IRQL做判断,选择是否可以调用API,还是work或者apc等。

4) 涉及多线程数据处理,不要再函数内部直接处理。尽量上锁插入队列链表,起一个线程读取操作。

5) 不要抗拒使用Event,这并不麻烦,这几乎是最有利的方式。

6) 多打印日志,关键部分加入outdebug或者kbprint,设置日志级别。


推荐他们去看《C++并发编程实战第2版》(王高飞翻译版),他们觉着两者并没有关系。个人观点这是个误解,除非import库已经给你做好了接口,内部代码编写本质上不区分语言的,特别是队列设计,线程,锁事件等,设计模式它适用于全部工程性代码。


大佬们也有有对编程经验分享,可以评论区分享。


[注意] 欢迎加入看雪团队!base上海,招聘CTF安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

最后于 2021-8-18 15:33 被一半人生编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (9)
雪    币: 9997
活跃值: 活跃值 (5074)
能力值: ( LV12,RANK:302 )
在线值:
发帖
回帖
粉丝
一半人生 活跃值 5 2021-8-18 09:21
2
0

并发编程实战 - 王高飞翻译版

最后于 2021-8-18 09:25 被一半人生编辑 ,原因:
上传的附件:
雪    币: 2778
活跃值: 活跃值 (1282)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
0346954 活跃值 1 2021-8-18 09:31
3
0
感谢分享
雪    币: 3316
活跃值: 活跃值 (634)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
皮皮虾啊 活跃值 2021-8-18 09:33
4
0
那么问题来了,怎么上手一个驱动项目
雪    币: 3956
活跃值: 活跃值 (4547)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
学技术打豆豆 活跃值 1 2021-8-18 09:34
5
0
举报大佬上班摸鱼
雪    币: 941
活跃值: 活跃值 (1301)
能力值: ( LV6,RANK:85 )
在线值:
发帖
回帖
粉丝
tobeabel 活跃值 1 2021-8-18 11:11
6
0
那么问题来了,怎么上手一个驱动项目
雪    币: 92
活跃值: 活跃值 (414)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 活跃值 2021-8-18 11:34
7
0
皮皮虾啊 那么问题来了,怎么上手一个驱动项目[em_13]
去github上下载一份ms的示例代码,安装vs2019,WDK,打开项目,编译通过,OK,已经学会驱动 开发
雪    币: 3316
活跃值: 活跃值 (634)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
皮皮虾啊 活跃值 2021-8-18 20:00
8
0
hixhi [em_13]去github上下载一份ms的示例代码,安装vs2019,WDK,打开项目,编译通过,OK,已经学会驱动 开发[em_13]
懂了,这就去和tp对线
雪    币: 1012
活跃值: 活跃值 (920)
能力值: ( LV7,RANK:101 )
在线值:
发帖
回帖
粉丝
coneco 活跃值 2 2021-8-20 01:09
9
0
根据你提出的建议,他们应该是有线程同步的需求。
c++并发的推荐感觉不错,可能重要的是开发者需要有设计模式的意识。
雪    币: 1108
活跃值: 活跃值 (1331)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
灵幻空间 活跃值 2021-10-15 11:22
10
0
面向Google CV工程师,就OK
游客
登录 | 注册 方可回帖
返回