锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 驱动开发培训 / 驱动开发数据安全

服务方向

软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
流媒体开发
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
MicroStation二次开发
计算机英语翻译

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源承接关于本文的任何培训、开发和技术服务需求,欢迎联系QQ396806883,微信ryysoft。

驱动开发数据安全


背景

近期驱动开发培训学员学习顺利进行中,在和学员交流中,学员认真学员,对于驱动开发语法上关于数据安全细节上进行了总结,这里分享给大家。

数据安全

驱动运行在操作系统的关键部位,如果驱动出问题,整个操作系统的调度都不能进行,轻则蓝屏,重则丢数据,所以对驱动代码质量要求很高,进而给开发带来了复杂度。这些复杂度有如下体现:

字符串

三成员模式

typedef struct _UNICODE_STRING {
USHORT Length; // 字符串的长度(字节数)
USHORT MaximumLength; // 字符串缓冲区的长度(字节数)
PWSTR Buffer; // 字符串缓冲区
} UNICODE_STRING, *PUNICODE_STRING;。
这是安全的描述,但记住它本身并没有字符串。因为第三个成员是指针,不是数组。

字符串的数据安全一方面是用更多的成员来约束长度的使用,另外是指定用宏和新函数来处理字符串,换掉用C库函数的习惯,这样对保证字符串的安全有了前提,不过最终还是要看开发人员的执行。

内存

内存的分配和释放用了特殊的函数代替了C库函数。

内存标记有点象应用层的预分配内存堆来对内存使用进行归类。

最厉害的还是LIST_ENTRY,用专用内存链表来约束开发人员使用内存,LIST_ENTRY可以理解为一个小的GC库,开发人员注册内存到库里,驱动某个功能执行完,把本功能库里的内存全释放,这样就防止了随意申请偶然泄露问题,但是开发人员要理解这样的苦心,用对用好。

OBJECT_ATTRIBUTES

在应用层面讲句柄,学员还不好理解,但是在驱动开发层面OBJECT_ATTRIBUTES能统一管理文件和注册表句柄,就会明白句柄的概念。句柄是操作系统层面管理特殊对象的指针,比如文件是特殊对象,句柄个数有限,句柄打开不关闭,就有泄漏,句柄多了,程序就崩溃了。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)