首页
社区
课程
招聘
[旧帖] [求助]内核开发下获取CPU核心数/线程数要怎么办? 0.00雪花
发表于: 2015-3-20 21:14 2145

[旧帖] [求助]内核开发下获取CPU核心数/线程数要怎么办? 0.00雪花

2015-3-20 21:14
2145
麻烦各位大牛,真的十分抱歉哈~

现在我在编写一个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:铺垫好像太多了。。。不过也是希望大家更好地理解我的问题。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 118
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
cpuid。。
2015-3-21 08:42
0
雪    币: 69
活跃值: (270)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
msf
3
网上搜索就能找到函数,你这个问题可用高并发的IOCP进行处理,不过解析http就要自己写了
2015-3-22 17:33
0
雪    币: 88
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢您的指导!
解析HTTP我有现成的以前写的,可以满足我的要求。IOCP我查了下,貌似比较复杂哈,有带进一步研究。
2015-3-25 20:37
0
雪    币: 88
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢大神指导!以前没想到可以用汇编获得CPU信息!
网上的获取函数能直接用在驱动代码里吗》需不需要什么修改啊
2015-3-25 20:38
0
游客
登录 | 注册 方可回帖
返回
//