reactos:reactos操作系统实现(90)来源: 发布时间:星期一, 2009年9月28日 浏览:0次 评论:0
下面来分析IoAllocateDriverObjectExtension实现这个主要实现创建驱动扩展内存
#001 NTSTATUS 首先假定分配扩展驱动对象失败 #012 /* Assume failure */ 为扩展驱动对象分配新内存 #015 /* Allocate the extension */ 如果分配内存失败就直接返回 #020 (!NewDriverExtension) STATUS_INSUFFICIENT_RESOURCES; 清空扩展区对象内存空间 #022 /* Clear the extension for teh caller */ 获取DPC级别锁以便操作扩展对象 #026 /* Acqure lock */ 填写扩展对象 #029 /* Fill out the extension */ 查找到当前扩展对象并判断是否有冲突 #032 /* Loop the current extensions */ 这里发现有冲突ID就跳出循环返回失败 #041 /* We have a collision, out */ 如果没有冲突驱动扩展就创建个新扩展 #049 /* Check we didn't collide */ 标记已经插入到扩展 #057 Inserted = TRUE; 如果没有插入到驱动扩展介绍说明有冲突因此删除的前分配内存 #063 /* Check insertion failed */ 返回驱动扩展开始位置 #071 /* Otherwise, the poer */ 有了驱动扩展就可以填写用户编写驱动保存数据地方了比如驱动锁、列表、还有驱动要访问IO资源等等 0
相关文章读者评论发表评论 |
|