首页
社区
课程
招聘
[分享]Windows驱动开发初学者注意事项
发表于: 2021-8-18 09:19 15966

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

2021-8-18 09:19
15966

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

1) 平衡原则: 

创建线程 - 必须销毁 

创建回调 - 必须销毁 

申请内存 - 必须释放   

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

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

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

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

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

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

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-8-18 15:33 被一半人生编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (12)
雪    币: 2278
活跃值: (12799)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
2

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

最后于 2021-8-18 09:25 被一半人生编辑 ,原因:
上传的附件:
2021-8-18 09:21
1
雪    币: 3859
活跃值: (6026)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2021-8-18 09:31
0
雪    币: 181
活跃值: (3982)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
那么问题来了,怎么上手一个驱动项目
2021-8-18 09:33
0
雪    币: 201
活跃值: (8572)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
举报大佬上班摸鱼
2021-8-18 09:34
0
雪    币: 1451
活跃值: (2069)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
6
那么问题来了,怎么上手一个驱动项目
2021-8-18 11:11
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
皮皮虾啊 那么问题来了,怎么上手一个驱动项目[em_13]
去github上下载一份ms的示例代码,安装vs2019,WDK,打开项目,编译通过,OK,已经学会驱动 开发
2021-8-18 11:34
0
雪    币: 181
活跃值: (3982)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
hixhi [em_13]去github上下载一份ms的示例代码,安装vs2019,WDK,打开项目,编译通过,OK,已经学会驱动 开发[em_13]
懂了,这就去和tp对线
2021-8-18 20:00
0
雪    币: 5029
活跃值: (4798)
能力值: ( LV10,RANK:171 )
在线值:
发帖
回帖
粉丝
9
根据你提出的建议,他们应该是有线程同步的需求。
c++并发的推荐感觉不错,可能重要的是开发者需要有设计模式的意识。
2021-8-20 01:09
0
雪    币: 1290
活跃值: (2332)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
面向Google CV工程师,就OK
2021-10-15 11:22
0
雪    币: 219
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
一半人生 并发编程实战 - 王高飞翻译版
过期了 哪位大佬还有
2022-10-17 16:59
0
雪    币: 8401
活跃值: (4976)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2023-4-18 23:12
0
雪    币: 200
活跃值: (398)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
第二点,什么理由
2023-5-19 12:50
0
游客
登录 | 注册 方可回帖
返回
//