驱动和r3通信

tiankong_bear 2012-07-20 09:26:42
r3

while(1)
{
DeviceIOcontrol(……)

显示收到的信息
}


r0:
DeviceIOcontrol irp:
KeWaitForSingleObject(&Semaphore,Executive,KernelMode,FALSE,NULL);


欲发送信息的线程:
KeReleaseSemaphore(&Semaphore,IO_NO_INCREMENT,1,0);


结果r3永远被阻塞 无反应
这样有什么问题?


...全文
222 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiankong_bear 2012-07-22
  • 打赏
  • 举报
回复
现在基本正常了
问题出在一开始KeReleaseSemaphore被未知线程连续调用了n此。
感觉就像Semaphore只能用一次就永远放行了
Lactoferrin 2012-07-22
  • 打赏
  • 举报
回复
KeReleaseSemaphore后KeWaitForSingleObject是否返回
tiankong_bear 2012-07-22
  • 打赏
  • 举报
回复
KeReleaseSemaphore 也有返回5 ,8,20,之类
tiankong_bear 2012-07-22
  • 打赏
  • 举报
回复
我感觉KeWaitForSingleObject没有降低信号量
tiankong_bear 2012-07-22
  • 打赏
  • 举报
回复
kerealse 首次使用返回0
再用返回 13 ;
kewait总是返回0
RLib 2012-07-22
  • 打赏
  • 举报
回复
这个问题得去问问列宁
Lactoferrin 2012-07-21
  • 打赏
  • 举报
回复
你弄日志来看,打印返回值
tiankong_bear 2012-07-21
  • 打赏
  • 举报
回复
KeReleaseSemaphore是不是成功调用

首次调用一定是成功了。
如果换了一个进程调用是否会失败? 但是它有什么理由失败?
Lactoferrin 2012-07-21
  • 打赏
  • 举报
回复
psgetcurrentprocessid谁调用就是谁
Lactoferrin 2012-07-21
  • 打赏
  • 举报
回复
你看KeReleaseSemaphore是不是成功调用
tiankong_bear 2012-07-21
  • 打赏
  • 举报
回复
还有
psgetcurrentprocessid 和任务管理器显示的pid不同是为什么?
tiankong_bear 2012-07-21
  • 打赏
  • 举报
回复
问题应该出在信号量上面。
它首次使用时正常。再次使用就要么永远放行 或者永远阻塞。什么原因?
tiankong_bear 2012-07-21
  • 打赏
  • 举报
回复
有时似乎没有KeReleaseSemaphore都返回了
有时不返回
Lactoferrin 2012-07-20
  • 打赏
  • 举报
回复
KeWaitForSingleObject返回没
tiankong_bear 2012-07-20
  • 打赏
  • 举报
回复
r0:
DeviceIOcontrol irp:
KeWaitForSingleObject(&Semaphore,Executive,KernelMode,FALSE,NULL);
收到信号后就写入输出缓冲,
然后就IOcompleteRequest了

返回了
RLib 2012-07-20
  • 打赏
  • 举报
回复
驱动没有返回

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧