驱动服务停不了该怎么办

zzz822163 2008-11-10 05:34:20
我在玩通过PsSetCreateProcessNotifyRoutine监视进程创建的程序,我在停止的时候他说The requested control is not valid for this service
MSDN上说Explanation:
The control request was ignored. Stop, pause, continue, and interrogate are examples of standard control requests. There are also user-defined controls. This message could be returned, for instance, if an application sends a pause request to a service that does not support pause.

User Action:
Contact the supplier of the running application.

我该怎么做?我把服务删除了都没用,得重起机器才行,太麻烦

...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-11-11
  • 打赏
  • 举报
回复
定义一个DriverUnload函数,在该函数中调用。在DriverEntry中,将该函数指针赋给DRIVER_OBJECT的DriverUnload成员。
feeboby 2008-11-11
  • 打赏
  • 举报
回复
一般放在remove 例程或者unload 例程里面。

其实随便哪个点都可以,只要你清楚自己的目的。
palmax 2008-11-11
  • 打赏
  • 举报
回复
那就把卸载放到 DriverUnload 的 dispatch 里
zzz822163 2008-11-11
  • 打赏
  • 举报
回复
这是我自己的服务,但我不知道应该把PsSetCreateProcessNotifyRoutine加到哪个位置,
之前创建时是放在DriverEntry里的,
糊里糊涂 2008-11-11
  • 打赏
  • 举报
回复
NTSTATUS
PsSetCreateProcessNotifyRoutine(
IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
IN BOOLEAN Remove
);
第二个参数remove就是你是要增加routine还是要移走routine
cnzdgs 2008-11-10
  • 打赏
  • 举报
回复
用新一些的WDK。
You can remove the callback by calling PsSetCreateProcessNotify with Remove = TRUE.
palmax 2008-11-10
  • 打赏
  • 举报
回复
DDK文档里确实说一旦设置了Routine,就要一直工作直至系统关闭。
不知道你要删什么服务,不过你不能删吧,别的程序还要用,除非那个服务是你自己的。即使是你自己的,如果你的服务里调用了PsSetCreateProcessNotifyRoutine,那你的服务也不能停止,因为停止你的服务将导致PsSetCreateProcessNotifyRoutine设置的那个函数指针无效。

要想撤销这个Routine,除非你找到你注册的Routine函数在Routine链的地址,然后PsSetCreateProcessNotifyRoutine第二个参数传TRUE来卸载。
WinXP SP2新增PsRemoveCreateThreadNotifyRoutine和PsRemoveLoadImageNotifyRoutine,但偏偏没有PsRemoveCreateProcessNotifyRoutine。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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