#define MAX_SECTION_LENGTH 1391  // 1024 + 184 possible stuffing bytes + 183 possible bytes from previous section

UCHAR           m_ucPMTBuffer[MAX_SECTION_LENGTH];

RtlCopyMemory(m_ucPMTBuffer,pbSection,pulProperty->ulcbSectionLength+3);

驱动程序中用到这个数组保存一组数据。

(1)把m_ucPMTBuffer定义成局部变量时debug版会蓝屏,release运行没有问题。

(2)而m_ucPMTBuffer定义成全局变量就全都正常。

查找MSDN得到:

RtlCopyMemory routine
The RtlCopyMemory routine copies the contents of a source memory block to a destination memory block.

Syntax
C++Copy
 
VOID RtlCopyMemory(
  _Out_  VOID UNALIGNED *Destination,
  _In_   const VOID UNALIGNED *Source,
  _In_   SIZE_T Length
);

Parameters
Destination [out]
A pointer to the destination memory block to copy the bytes to.

Source [in]
A pointer to the source memory block to copy the bytes from.

Length [in]
The number of bytes to copy from the source to the destination.

Return value
None

Remarks
RtlCopyMemory runs faster than RtlMoveMemory. However, RtlCopyMemory requires that the source memory block, which

is defined by Source and Length, cannot overlap the destination memory block, which is defined by Destination and

Length. In contrast, RtlMoveMemory correctly handles the case in which the source and destination memory blocks

overlap.

Callers of RtlCopyMemory can be running at any IRQL if the source and destination memory blocks are in nonpaged system memory. Otherwise, the caller must be running at IRQL <= APC_LEVEL.

#define PASSIVE_LEVEL                             0

#define LOW_LEVEL                                 0

#define APC_LEVEL                                  1

#define DISPATCH_LEVEL                           2

而驱动里我的程序运行在 KeGetCurrentIrql() == DISPATCH_LEVEL,所以只能把数据存储在非分布内存中,而全局数据正是在非分布内存中。

所以使用的数组只能定义成全局变量。debug 会直接导致蓝屏,而release可能是对程序进行了优化。

(默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。)

PS:当然也可以使用ExAllocatePool或ExAllocatePoolWithTag指定变量存储在非分页内存中(NonPagedPool),而把它定义成类的成员变量或者局部变量。

RtlCopyMemory致使的蓝屏相关推荐

  1. 《软件调试》读书笔记:第13章 硬错误和蓝屏

    会话管理器进程SMSS.exe是系统启动后的第一个用户态进程,负责启动和监护windows子系统进程:CSRSS.exe和登陆管理进程:WinLogon SMSS.exe从注册表中查询子系统exe文件 ...

  2. win7旗舰版蓝屏代码说明

    电脑蓝屏死机的原因因机器配置使用不同,造成蓝屏死机的原因多种多样,给你提供一些线索,你自己去排除. 1.散热不良,显示器.电源和CPU工作时间太长会导致死机,给风扇除尘,上油,或更换风扇,台式机在主机 ...

  3. 电脑重启出现蓝屏提示“beginning dump of physical memory”解决方法

    最近有微软用户反映,电脑很经常重启后出现蓝屏,并提示错误代码"beginning dump of physical memory",用户不知道这是怎么回事,也不知道该怎么办,为此非 ...

  4. 计算机常见维护(鼠标键盘、不能开机、自动关机、无故重启、运行变慢、蓝屏等问题)

    ** 鼠标键盘不能使用 ** 解决方法:考虑鼠标键盘数据线是否插好,如果是针式键盘重新接插后要重新启动计算机一次才能正常使用,检查针脚是否弯曲或损坏,可以通过更换使用正常的鼠标键盘来判断是否是鼠标键盘 ...

  5. 电脑蓝屏故障分析大全

    电脑蓝屏故障分析大全 ,代码含意一览表1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:主要是由问题的驱动程序.有缺陷或不兼容的硬件与软件造成的. 从技术角度讲. 表 ...

  6. xp系统蓝屏代码7b_电脑蓝屏重启不求人!学会这个方法,自己就能轻松解决!...

    在重装win10系统的过程中,我们需要多次等待电脑的重启,直到最后一次重启进入win10系统桌面,win10重装才算结束. 但如果在安装win10系统时,屏幕显示蓝屏,且无限重启,该怎么办呢? 下面马 ...

  7. 电脑蓝屏问题检查、解决、

    蓝屏问题 1检查 在开始-->:运行中输入:EventVwr.msc ,回车出现"事件查看器",注意检查其中的"系统日志"和"应用程序日志&qu ...

  8. BaseTDI.sys 瑞星卡巴冲突,导致机器蓝屏

    今天中午在给本次评教活动导入各学院10级学生信息时,多次出现蓝屏,其主要错误信息为 "BaseTDI.SYS  Address  9188783F  base  at  91887000  ...

  9. 0x000000ed怎么修复_win10蓝屏代码0x000000ed的修复方法

    今天主编给大家细说win10蓝屏代码0x000000ed的修复方法,蓝屏是计算机系统出现问题的一个表现,平常很多人在使用电脑的过程中经常会遇到,当你遇到电脑蓝屏代码0x000000ed的问题时,可参照 ...

最新文章

  1. C# 窗体位置 Show和ShowDialog (转载)
  2. python SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: trunca
  3. C#垃圾回收学习总结
  4. SpringMVC使用AOP
  5. 【WIN10】WIN2D——基本圖形的繪製
  6. HashMap vs ConcurrentHashMap — 示例及Iterator探秘
  7. Ubuntu中安装、生成、导入、导出、Python3虚拟环境
  8. 自动生成考勤表_可自动变色的考勤表,逢周末自动更新,你会制作吗?
  9. 181220每日一句
  10. 综合能源管理服务认证是什么?综合能源管理服务认证含哪些专业?综合能源服务认证流程
  11. 关于算法竞赛入门经典3.4.2思考题题目1必要的存储量的思考
  12. 【计算机图形学】几何
  13. VMware Workstation虚拟机无法共享主机网络解决方法
  14. Action Segmentation with Joint Self-Supervised Temporal Domain Adaptation
  15. DSPE-PEG4-Mal分子式:C56H103N2O15P的分子量介绍
  16. Scala基础(四)
  17. jquery解绑、绑定笔记
  18. (完美解决)App点击Home键后,再次点击APP图标,APP重启回不到点击home键前的那个界面
  19. 在职研究生计算机专业学什么区别,计算机专业在职研究生考试科目有哪些?
  20. 比光刻机还重要的IP核是什么?

热门文章

  1. 多媒体计算机技术论文结束语,多媒体计算机技术教学论文
  2. 当谈论工程师文化时我们在谈些什么
  3. 搜索引擎的概念鄂州_鄂州SEO优化-鄂州百度网站关键词推广矩阵系统-鄂州整站快速排名...
  4. 测控技术与仪器应该学计算机哪些,测控技术与仪器专业到底学到了什么?
  5. C - 数字三角形问题
  6. OKHttp之Post请求案例
  7. 亚马逊账户锁定无法登陆_如何删除您的亚马逊账户
  8. 有了SQL Server 2005 JDBC还需要SQL Server 2000 JDBC吗?
  9. 孩子学python_【二孩家庭要注意什么】二孩家庭要怎么教育_二孩家庭的孩子最好间隔几岁 - 妈妈网百科...
  10. 有趣之-图书管理系统