-
-
[旧帖]
[求助]内核开发下获取CPU核心数/线程数要怎么办?
0.00雪花
-
发表于:
2015-3-20 21:14
2143
-
[旧帖] [求助]内核开发下获取CPU核心数/线程数要怎么办?
0.00雪花
麻烦各位大牛,真的十分抱歉哈~
现在我在编写一个NDIS,要把上行和下行的HTTP包全拦下来,然后都发给应用程序。
一开始我搞不懂驱动程序如何主动发信息给Ring3,在百度上提问愣是没人回答。不过这个问题有人研究过,网上查到了解决方式(用KeWaitForSingleObject挂起处理)。
现在那个问题解决了,不过又遇到了一个新的问题,我发现发往服务器的HTTP包处理时的IRQL是PASSIVE_LEVEL,可是服务器发回来的就是DISPATCH_LEVEL了。我的程序里要发东西到Ring3,DeviceIoControl的处理函数IRQL很低,如果我IRQL高的处理函数同时运行几个,就轮不到DeviceIoControl执行了,可是我的处理函数里又要等着DeviceIoControl响应,由此造成互相等待锁死。(DeviceIoControl等着处理函数释放占用的CPU,而处理函数等着DeviceIoControl返回信息)
现在我能想到的解决方式就是限制处理函数的并发执行数,最大不能超过总CPU数的一半,至少要留下一个IRQL低的CPU。不过不知道内核下c获取CPU核心数的方法是什么?
PS:铺垫好像太多了。。。不过也是希望大家更好地理解我的问题。
[课程]Android-CTF解题方法汇总!