2800|3

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

成功加载驱动,但卸载失败! [复制链接]


  1. //SOURCES
  2. TARGETNAME=hello
  3. TARGETPATH=obj
  4. TARGETTYPE=DRIVER
  5. SOURCES=hello.c

  6. //hello.c
  7. void StartSrv()
  8. {
  9.         char namebuf[256];
  10.         memset(namebuf, 0, sizeof(namebuf));
  11.         SC_HANDLE hMgr, hCS, hOS;

  12.         GetCurrentDirectory(256, namebuf );
  13.         strcat(namebuf, "\\objchk\\i386\\hello.sys" );

  14.         hMgr = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  15.         if(hMgr == NULL)
  16.         {
  17.                 printf("OpenSCManager failed!!!\n");
  18.                 exit(0);
  19.         }
  20.         hCS = CreateService(hMgr,TEXT("hello"), TEXT("hello"),
  21.                                                 SERVICE_ALL_ACCESS,
  22.                                                 SERVICE_KERNEL_DRIVER,
  23.                                                 SERVICE_DEMAND_START,
  24.                                                 SERVICE_ERROR_IGNORE,
  25.                                                 TEXT(namebuf),0,0,0,0,0);
  26.         if(hCS == NULL)
  27.         {
  28.                 printf("CreateService failed!\n");
  29.                 CloseHandle(hMgr);
  30.                 exit(0);
  31.         }

  32.         hOS = OpenService(hMgr, "hello", SERVICE_ALL_ACCESS);
  33.         if(hOS == NULL)
  34.         {
  35.                 printf("OpenService failed!\n");
  36.                 CloseHandle(hCS);
  37.                 CloseHandle(hMgr);
  38.                 exit(0);
  39.         }
  40.         StartService(hOS,NULL,NULL);
  41.         CloseServiceHandle(hCS);//到这里就可以在DeviceTree里看到hello了
  42.         CloseServiceHandle(hOS);
  43.         CloseServiceHandle(hMgr);
  44.         getch();
  45.         CloseSvc(TEXT("hello"));
  46. }
  47. void CloseSvc(char *pServiceName)
  48. {
  49.         SC_HANDLE sch;
  50.         SERVICE_STATUS ss;
  51.         sch = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);//成功
  52.         if(sch == NULL)
  53.         {
  54.                 printf("OpenSCManager failed!\n");
  55.                 exit(0);
  56.         }
  57.         SC_HANDLE scm;
  58.         scm = OpenService(sch,TEXT(pServiceName),SERVICE_ALL_ACCESS);//成功
  59.         if(scm == NULL)
  60.         {
  61.                 CloseServiceHandle(sch);
  62.                 printf("OpenService failed!\n");
  63.                 exit(0);
  64.         }
  65.         if(!ControlService(scm, SERVICE_CONTROL_STOP, &ss))//这个失败
  66.         {
  67.                 CloseServiceHandle(sch);
  68.                 CloseServiceHandle(scm);
  69.                 printf("ControlService failed!\n");
  70.                 exit(0);
  71.         }
  72.         if(!DeleteService(scm))
  73.         {
  74.                 CloseServiceHandle(sch);
  75.                 CloseServiceHandle(sch);
  76.                 printf("DeleteService failed!\n");
  77.                 exit(0);
  78.         }
  79. }
复制代码

最新回复

恭喜。哈哈。是windows的驱动? 厉害。  详情 回复 发表于 2009-3-7 16:05
点赞 关注

回复
举报

84

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
解决了,是我驱动代码的问题......

来人接分!!!
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
恭喜
其实你可以结合驱动一起调试,问题应该比较好找
建议不要做NT式的驱动,最好是做WDM/WDF的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
恭喜。哈哈。是windows的驱动?

厉害。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表