1) 平衡原则:
创建线程 - 必须销毁
创建回调 - 必须销毁
申请内存 - 必须释放
锁、互斥等句柄 - 必须关闭释放
链表规范使用 - API初始化 - API释放删除
链表数据 - 卸载之前要清空数据
2) 大量的字符串尽量应用层处理 或者 转换成自定义的二进制数据内核做memcpy对比。
3) 很多场景应该对IRQL做判断,选择是否可以调用API,还是work或者apc等。
4) 涉及多线程数据处理,不要再函数内部直接处理。尽量上锁插入队列链表,起一个线程读取操作。
5) 不要抗拒使用Event,这并不麻烦,这几乎是最有利的方式。
6) 多打印日志,关键部分加入outdebug或者kbprint,设置日志级别。
推荐他们去看《C++并发编程实战第2版》(王高飞翻译版),他们觉着两者并没有关系。个人观点这是个误解,除非import库已经给你做好了接口,内部代码编写本质上不区分语言的,特别是队列设计,线程,锁事件等,设计模式它适用于全部工程性代码。
(引用自看雪论坛 作者:一半人生)
标签: windows内核开发