用于"内核内存检查的C ++函数"在访问之前

时间:2017-08-03 13:11:46

标签: windows kernel driver c++14

我正在开发一个简单的设备驱动程序用于学习。通过大量的测试,我创造了很多错误,最终导致我的电脑进入蓝屏。我确信原因是内存崩溃。所以现在我想检查一下我的代码是否可以在进一步访问之前访问内核内存。 我的问题是什么函数可以检查内核内存中是否可访问它。例如,有一个带有两个字段的指针结构,我想访问第一个字段,它也是一个指针但现在知道它是否真的具有可访问值或只是垃圾值。 在这个给定的上下文中,我需要检查它以确保我没有得到蓝屏。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

这对于内核内存是不可能的。你必须确切知道内核地址是否有效,并且在访问期间是有效的。如果您从用户模式获取地址 - 您可以而且必须使用ProbeForReadProbeForWrite。但这仅适用于用户模式缓冲区。对于任何内核内存(甚至有效和常驻),此函数只会引发异常。从无效访问内核内存地址没有任何保护。尝试 - 除了处理程序在这里没有帮助 - 你刚刚进行了PAGE_FAULT_IN_NONPAGED_AREA错误检查

  

例如,有一个指针结构有两个字段,我想要   访问第一个字段,它也是一个指针,但现在知道   它是否确实具有可访问的值或只是垃圾值。

你从哪里得到这个指针?谁填写这个结构?你不能检查。你必须在开始时知道这个指针是有效的,结构的上下文在你使用它的时候是有效的。否则你的代码已经错误和错误了