驱动卸载问题

ZOthello 2008-08-06 07:45:32
应用程序加载驱动,工作完后把驱动卸载了,应用程序不退出,再加载驱动就加载不了了。但是把应用程序退出后再次启动应用程序再加载驱动,就可以了。
我新手,不太清楚到底是什么原因,大侠给分析下会是什么地方的原因!!!
...全文
168 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-08-06
  • 打赏
  • 举报
回复
估计是前1次安装失败时,服务管理器把服务信息全都清除了。
ZOthello 2008-08-06
  • 打赏
  • 举报
回复
哦,那为什么点两次就可以加载上驱动了?
ZOthello 2008-08-06
  • 打赏
  • 举报
回复
SC_HANDLE t;
SERVICE_STATUS stat;
char namebuff[256];
//get path to ths .sys.file
GetModuleFileName(0,namebuff,256);
DWORD a=strlen(namebuff);
while(1)
{
if(namebuff[a]=='\\')break;
a--;
}
a++;
strcpy(&namebuff[a], "mszyc.sys");
SC_HANDLE man=OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS);
t=OpenService(man,"regmonservice",SERVICE_ALL_ACCESS);
ControlService(t,SERVICE_CONTROL_STOP,&stat);
DeleteService(t);
CloseServiceHandle(t);
if (man==NULL)
{
MessageBox("打开任务管理器失败");

}
t=CreateService(man,"regmonservice","regmonservice",
SERVICE_START|SERVICE_STOP,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,SERVICE_ERROR_NORMAL,namebuff,0,0,0,0,0);
if (t==NULL)
{
MessageBox("创建服务失败");
}
if(0==StartService(t,0,0))
{
MessageBox("启动服务失败");
}
cnzdgs 2008-08-06
  • 打赏
  • 举报
回复
原来你是把服务删除了,当删除服务时,该服务的相关信息不会立即被清除,而是被标记为“删除”,重新启动电脑后才会清除,如果未重新启动而再次安装,就会出现这个情况,这是正常的。
ZOthello 2008-08-06
  • 打赏
  • 举报
回复
创建服务失败错误代码是1072
打开服务失败是6
evileagle 2008-08-06
  • 打赏
  • 举报
回复
就是啊,你加载的代码是怎么写的啊?
cnzdgs 2008-08-06
  • 打赏
  • 举报
回复
启动失败的错误码是什么?
你把启动和停止服务的代码贴出来看看。
ZOthello 2008-08-06
  • 打赏
  • 举报
回复
我把问题再描述一下,貌似上面的不太准确。
驱动卸载后,应用程序退出,然后再次加载驱动加载不上,显示服务启动失败。然后再点一次加载驱动就可以加载上了。
cnzdgs 2008-08-06
  • 打赏
  • 举报
回复
该关的句柄没关吧?调试看一下哪行代码失败,错误码是什么。
ZOthello 2008-08-06
  • 打赏
  • 举报
回复
那为什么应用程序退出后就可以加载了?
caimps 2008-08-06
  • 打赏
  • 举报
回复
估计是锁住了什么资源
你看看卸载驱动那部分代码有没有处理得不干净的

15,466

社区成员

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

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